Java 为什么我的泡泡搜索功能只能部分工作?

Java 为什么我的泡泡搜索功能只能部分工作?,java,arrays,methods,Java,Arrays,Methods,我创建了这个方法来冒泡搜索数组 它返回一个“稍微”有序的数组 例如,当我输入: 4. 2. 9 11 12 五, 它返回: 2. 4. 9 5. 11 十二, publicstaticvoidbubblesort(int数组[]){ 布尔固定=假; while(fixed==false){ 对于(int i=0;i数组[i+1]){ 温度=阵列[i+1]; 数组[i+1]=数组[i]; 数组[i]=温度; 固定=假; } } } } Ryan,我想如果你移动固定=真;在for循环之外,它

我创建了这个方法来冒泡搜索数组 它返回一个“稍微”有序的数组

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

它返回: 2. 4. 9 5. 11 十二,

publicstaticvoidbubblesort(int数组[]){
布尔固定=假;
while(fixed==false){
对于(int i=0;i数组[i+1]){
温度=阵列[i+1];
数组[i+1]=数组[i];
数组[i]=温度;
固定=假;
}
}
}    
}

Ryan,我想如果你移动固定=真;在for循环之外,它可能会解决该问题。我没有对此进行测试。

在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;
            }   
        }   
    }    
}   
publicstaticvoidbubblesort(int数组[]){
布尔固定=假;
而(!固定){
固定=正确;
对于(int i=0;i数组[i+1]){
温度=阵列[i+1];
数组[i+1]=数组[i];
数组[i]=温度;
固定=假;
}   
}   
}    
}   

我认为您应该稍微修改一下代码。要将fixed=true语句移出for循环,此fixed标志用于指示for循环中是否发生了任何交换。出现问题的原因是5小于11,并且发生了交换,将fixed更改为false,但下一次迭代将fixed更改为true。而for循环结束,当检查修复时,发现它是正确的,程序停止。

这就是问题所在,非常感谢!还有,我的意思是泡泡排序
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;
            }   
        }   
    }    
}