BubbleSort using integer Array



我一直在尝试使用java中的简单整数数组来实现Bubble Sort。然而,似乎存在一些问题。现在我知道使用ArrayList将是最好的选择,我也会这么做。但是为什么不使用简单的整数数组对其进行排序呢。这是代码

package sort;
public class BubbleSort {
    int array[]={1,5,3,32,54,6,87,5,1};
    int temp=0;
public void enter(){
    for(int i=0;i<array.length;i++){
        for(int j=0;j<(array.length-i);j++){
            if(array[j]>=array[j+1]){

                temp=array[j];
                array[j]=array[j+1];
                array[j+1]=temp;
                }
        }
    }
}
public void show(){
    for(int i:array){
    System.out.println(i);
    }
}
public static void main(String str[]){
    new BubbleSort().Enter();
    new BubbleSort().Show();
}
}

它产生的数组与输入的数组相同。什么都没有改变。简单数组和ArrayList或Vector之间的区别在于,它们提供了数组大小的动态时间扩展。还有别的吗?我的意思是,简单数组每次被操作时都会创建一个不同的实例,就像Strings一样吗?这里似乎确实如此。

问题是没有为BubbleSort类的实例化指定名称。

new BubbleSort().Enter();
new BubbleSort().Show();

您的代码创建了一个新的BubbleSort类,然后对其进行排序。然后,它创建了另一个新(完全独立)的BubblySort类,并显示该类,但它尚未排序。

你想给你的变量起一个名字,这样你就可以对它进行排序,然后显示它,就像这样:

BubbleSort myBubbleSort = new BubbleSort();
myBubbleSort.Enter();
myBubbleSort.Show();

顺便说一句(正如SiB的回答所指出的),您可能还想看看Java命名约定。遵循这些约定可以使您的代码对其他Java程序员更容易阅读,并包括使用lowerCamelCase表示方法名,使用UpperCamelCase表示类名。

因为您正在排序一个实例并显示另一个实例

new BubbleSort().Enter();
new BubbleSort().Show();

使用

BubbleSort bubbleSort = new BubbleSort();
bubbleSort.Enter();
bubbleSort.Show();

此外,至少应该将Enter()重命名为enter(),将Show()重命名为show()

因为您要创建两个不同的BubbleSort对象,所以对第一个进行排序并显示另一个。

应该是。。。。

public static void main(String str[]){
    BubbleSort sort = new BubbleSort();
    sort.Enter();
    sort.Show():
}

正确的BubbleSort代码是:

    int temp = 0;
    for (int i = 0; i < array.length; i++) {
        for (int j = 1; j < (array.length - i); j++) {
            if (array[j - 1] > array[j]) {
                temp = array[j - 1];
                array[j - 1] = array[j];
                array[j] = temp;
            }
        }
    }

我希望它能帮助其他人寻找它。

最新更新