Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用整数数组的BubbleSort_Java_Sorting_Bubble Sort - Fatal编程技术网

Java 使用整数数组的BubbleSort

Java 使用整数数组的BubbleSort,java,sorting,bubble-sort,Java,Sorting,Bubble Sort,我一直在尝试用java中的简单整数数组实现冒泡排序。然而,似乎有一些问题。现在我知道使用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++){

我一直在尝试用java中的简单整数数组实现冒泡排序。然而,似乎有一些问题。现在我知道使用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的区别在于,它们提供了数组大小的动态时间扩展。还有其他的吗?我的意思是,简单数组是否每次被操作时都会创建一个不同的实例,就像字符串一样?这里似乎确实如此。

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

使用


另外,至少应该将Enter重命名为Enter,将Show重命名为Show。

问题在于您没有为BubbleSort类的实例化指定名称

new BubbleSort().Enter();
new BubbleSort().Show();
您的代码创建一个新的BubbleSort类,然后对其进行排序。然后它创建了另一个新的、完全独立的BubbleSort类,并显示该类,但它还没有被排序

您希望为变量指定一个名称,以便对其进行排序,然后显示它,如下所示:

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

作为旁注,正如SiB的回答中所指出的,您可能还想查看。遵循这些约定可以让其他Java程序员更清楚地理解您的代码,包括使用小写字母表示方法名,大写字母表示类名

因为您正在创建两个不同的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;
            }

        }
    }

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

请注意,在Java中,包名的大小写是惯例,方法名的大小写是惯例。看见当Java开发人员阅读违反这一点的代码时,令人惊讶地困惑。不,这不是家庭作业。我使用的是eclipse,这个特殊的包有所有的排序程序。我不知道如何给它重新命名。我知道这不是正确的惯例。下次我会记住的。谢谢你,太有用了谢谢!!我怎么会错过这个@Kanwaljeethingh不要忘记
public static void main(String str[]){

    BubbleSort sort = new BubbleSort();
    sort.Enter();
    sort.Show():

}
    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;
            }

        }
    }