public class Test4 {
public static void main(String[] args) {
int[] arrays = {1,4,2,3,9,5,6};
int t;
for(int i=0; i<arrays.length; i++) {
for(int j=++i; j<arrays.length; j++) {
if(arrays[i] < arrays[j]) {
t = arrays[i];
    arrays[i] = arrays[j];
    arrays[j] = t;
}
}
}
for(int z=0; z<arrays.length; z++) {
System.out.print(arrays[z]+"  ");
}
}
}
我在做练习的时候,为什么我写这个算法不对呢?排的顺序不是从大到小,问题出在哪了?

解决方案 »

  1.   

    问题出在这里for(int j=++i; j<arrays.length; j++)  
    j=++i; 
    相当于 i = i+1; j = i;
    但是你的本意只是想让j = i + 1并不想让i的值在这里发生变化 所以错了
    应该改成 for(int j=i + 1; j<arrays.length; j++) 
      

  2.   

    j=++i  不是和j = i+1相等吗??
      

  3.   

    不一样 j = ++i; i的值会变化
    j = i +1;       i的值不会发生变化
      

  4.   

    int   j = i ++
      

  5.   

    这是正解,你不能为了j的值而改变i。那样的话j值永远和i相等,那还比个什么劲!
      

  6.   

    j=0,j=j+1或者j=0,j<array.lengt-1
      

  7.   

    [Quote=引用 7 楼 little_johnny 的回复:]j=0,j=j+1或者j=0,j<array.lengt-1
    打错了,j=j+1或者j=0,j<array.lengt-1
      

  8.   

    基本的冒泡排序
    int sum []={4,2,3};
    int sums=0;
    for(int i=0;i<sum.length-1;i++){
    for(int j=0;j<sum.length-i-1;j++){
    if(sum[j]>sum[j+1]){
    sums=sum[j];
    sum[j]=sum[j+1];
    sum[j+1]=sums;
    }
    }
    }
    for(int i=0;i<sum.length;i++){
    System.out.println(sum[i]);
    }