Java 为什么我的排序代码不能正常工作?
我有一个整数数组,我需要:对前一半进行升序排序,对另一半进行降序排序。我不知道这不是我想要的工作的原因Java 为什么我的排序代码不能正常工作?,java,sorting,Java,Sorting,我有一个整数数组,我需要:对前一半进行升序排序,对另一半进行降序排序。我不知道这不是我想要的工作的原因 for(i = 0 ; i < array.length/2 - 1 ; i++){ ok = false; for(j = i ; j < array.length/2 - 1 ; j++){ if(array[j]>array[j+1]){
for(i = 0 ; i < array.length/2 - 1 ; i++){
ok = false;
for(j = i ; j < array.length/2 - 1 ; j++){
if(array[j]>array[j+1]){
tempValue = array[j];
array[j] = array[j+1];
array[j+1] = tempValue;
ok = true;
}
}
if(ok == false)
break;
}
for(i = array.length/2 ; i < array.length - 1 ; i++){
ok = false;
for(j = i ; j < array.length - 1; j++){
if(array[j]<array[j+1]){
tempValue = array[j];
array[j] = array[j+1];
array[j+1] = tempValue;
ok = false;
}
}
if(ok == false)
break;
}
Expected result: [4,1,2,5,6,8,7,9] - > [1,2,4,5,9,8,7,6].
Result in my code: [1,2,4,5,8,7,9,6].
您的代码中有多个错误。 对另一半数组排序时,major为ok=false。 下面的代码工作正常
public class MyClass {
public static void main(String args[]) {
int i,j,tempValue;
int array[]= {4,1,2,5,3,6,8,7,10,9};
boolean ok=true;
for(i = 0 ; i < array.length/2 ; i++){
ok = false;
for(j = i ; j < array.length/2 ; j++){
if(array[j]>array[j+1]){
tempValue = array[j];
array[j] = array[j+1];
array[j+1] = tempValue;
ok = true;
}
}
if(ok == false)
break;
}
for(i = array.length/2 ; i < array.length ; i++){
ok = false;
for(j = array.length/2 ; j < array.length - 1; j++){
if(array[j]<array[j+1]){
tempValue = array[j];
array[j] = array[j+1];
array[j+1] = tempValue;
ok = true;
}
}
if(ok == false)
break;
}
for(i = 0 ; i < array.length ; i++){
System.out.print(array[i]);
}
}
}
你试过调试代码吗?目前我正在在线编译器中编写,因此我没有调试器的访问权限。然后我建议你等到有了调试器,然后自己调试代码,而不是让我们为你调试。-在那之前,重新了解Bubblesort的工作原理。如果从低索引迭代到高索引,则最终会将最大值或最小值(如果排序向下)移动到末尾,因此在第二次迭代中,您可以跳过比较中的最后一个元素,而不是第一个元素,这就是代码所做的。