为什么我的BubbleSearch只能部分工作?

时间:2018-04-19 01:59:07

标签: java arrays methods

我创建了这个方法来冒泡搜索一个数组 并且它稍微返回了一个'有序数组。

例如,当我输入: 4 2 9 11 12 5

它返回: 2 4 9 五 11 12

    public static void bubbleSort(int array[]){


        boolean fixed= false;

        while(fixed==false){

            for(int i=0; i<array.length-1; i++){
                int temp;
                fixed=true;

                if (array[i] > array[i+1]){
                    temp= array[i+1];
                    array[i+1]= array[i];

                    array[i]= temp;
                    fixed=false;
                    }
            }
        }    
    }

3 个答案:

答案 0 :(得分:3)

在for循环之前移动fixed=true

public static void bubbleSort(int array[]){
    boolean fixed = false;
    while(!fixed){
        fixed = true;
        for(int i = 0; i < array.length-1; ++i){
            int temp;
            if (array[i] > array[i+1]){
                temp = array[i+1];
                array[i+1] = array[i];

                array[i] = temp;
                fixed = false;
            }   
        }   
    }    
}   

答案 1 :(得分:2)

瑞安,我想如果你移动fixed = true;在for循环之外,它可能会解决问题。我没有测试过这个。

答案 2 :(得分:0)

我认为你应该稍微修改你的代码。将fixed = true语句从你的for循环中移出。这个固定标志用于指示你的for循环中是否有任何交换。你的问题是因为5小于11,交换发生,更改固定为false但下一次迭代覆盖固定为true。和for循环结束,while检查固定,发现它是真,程序停止。