【问题标题】:Learning bubble sort [duplicate]学习冒泡排序[重复]
【发布时间】:2018-01-29 02:42:50
【问题描述】:

我的代码正在运行,但是当我执行代码时,数组的最后一个元素没有排序,它显示不变请帮助我。

package array;
import java.util.Scanner;

public class Array {
    public static void main(String[] args) {
        Scanner in= new Scanner(System.in);
        System.out.println("Enter the number of elements: ");
        int numOf=in.nextInt();

        int array1[]=new int[numOf];

        for(int i=0;i<array1.length;i++){
            System.out.println("Insert the "+(i+1)+" element of the array: ");
            array1[i]=in.nextInt();
        }
        System.out.println("The inserted array is:");
        for(int j=0;j<array1.length;j++){
            System.out.print(array1[j]+" ");
        }

        int temp=0;
        for(int k=0;k<array1.length;k++){
            for(int z=1;z<(array1.length-1);z++){
                if(array1[z-1]>array1[z]){

                    temp=array1[z-1];
                    array1[z-1]=array1[z];
                    array1[z]=temp;
                }
            }           
        }
        System.out.println("Sorted array");
        for(int c=0;c<array1.length;c++){
            System.out.print(array1[c]+" ");
        }
    }
}

【问题讨论】:

  • 学习调试。要么运行一个调试器,要么至少在每次循环后打印出整个数组以供检查,这样你就可以看到你的数组是如何变化的
  • 将 (array1.length-1) 更改为 (array1.length-k)

标签: java arrays bubble-sort


【解决方案1】:

正确的排序循环如下:

for (int k = 0; k < array1.length-1; k++) {
        for (int z = 0; z < array1.length-k-1; z++) {
            if (array1[z] > array1[z+1]) {
                temp = array1[z];
                array1[z] = array1[z+1];
                array1[z+1] = temp;
            }
        }
    }

【讨论】:

  • 应该是for(int z=1;z&lt;(array.length-k);z++);
  • array1.length-k-1 是正确的,因为我们将 z 与 z+1 进行比较,因此 z+1 覆盖最后一个元素。
【解决方案2】:

当您在代码中看到“因一个错误而关闭”时,请查看您正在循环从边界开始或结束 1 或多或少 1 的条件。

在这种情况下,我会仔细查看这一行

for(int z=1;z<(array1.length-1); z++)

为什么是length -1

【讨论】:

  • 谢谢,我知道我知道它应该是 `for(int z=1;z
猜你喜欢
  • 2021-03-24
  • 2014-08-09
  • 2018-07-10
  • 2017-02-07
  • 2013-10-09
  • 2021-04-01
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多