我创建了这个方法来冒泡搜索一个数组 并且它稍微返回了一个'有序数组。
例如,当我输入: 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;
}
}
}
}
答案 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)
答案 2 :(得分:0)
我认为你应该稍微修改你的代码。将fixed = true语句从你的for循环中移出。这个固定标志用于指示你的for循环中是否有任何交换。你的问题是因为5小于11,交换发生,更改固定为false但下一次迭代覆盖固定为true。和for循环结束,while检查固定,发现它是真,程序停止。