[英]Why my sorting code does not work properly?
我有一个整数数组,我需要:对前一半升序排序,对另一半降序排序。 我不知道这是我无法按需使用的原因。
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].
您的代码中存在多个错误。 在对另一半数组进行排序时,主键是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]);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.