//冒泡排序降序(从大到小)
int temp=0;  //临时变量
int[] num2=new int[]{90,55,33,88,100,-5,-7,1};
for(int i=0;i<num2.length-1;i++){   //外层循环控制循环多少轮
//内层循环把最大的元素交换到最前
for(int j=0;j<num2.length-1-i;j++){      //这里我有点不懂,把num2.length-1-i后面的-i去掉可以一样用,这是为什么?
if(num2[j]<num2[j+1]){  
//交换元素
temp=num2[j];
num2[j]=num2[j+1];
num2[j+1]=temp;
}
}
}
for(int i=0;i<num2.length;i++){
System.out.println(num2[i]);
}

解决方案 »

  1.   

    外循环第一次,把最小的放在最后面
    外循环第二次,把次小的放在倒数第二位所以j可以只循环到num2.length-1-i,因为后面的肯定比当前的小,不用比较那注释是LZ写的?再看看吧2L 3L 都被你忽悠了
      

  2.   

    “把num2.length-1-i后面的-i去掉可以一样用”,每次循环都找到一个最小的,因为倒数i个都是排好序的,已经是最小的,所以没必要再进行比较,故num2.length-1-i。去掉-i,增加了每个循环的比较次数...但不会影响结果了
      

  3.   

    楼上正解
    楼主用debug跟踪一下 也知道
      

  4.   

    LS都说了,我也凑个热闹
    其实冒泡就是一种“沉底”,反过来看就是“冒泡”了
    小循环里每次把最小的“沉底”里,所以下次比较的时候,就不要再跟“沉”下去的比了,你去掉-i没关系,就是每次都和沉底的比一次,不过不会发生变化,也就豪无意义了。for(int i=0;i<num2.length-1;i++){ 
    for(int j=num2.length-1;j>i;j--){ //反过来就真的冒泡了,每次把最大的“浮”上来,浮到i位置
    if (num2[j]>num2[j-1])            //“浮”上来的下次就不需要再比较了
      

  5.   


    楼主算法的比较次数为N^2,其实还可以优化下,比较N(N-1)/2次 public static void main(String[] args) {
    int k = 0;//统计循环执行次数
    int temp = 0; // 临时变量
    int[] num2 = new int[] { 90, 55, 33, 88, 100, -5, -7, 1 };
    for (int i = 0; i < num2.length; i++) { // 外层循环控制循环多少轮
    for (int j = i + 1; j < num2.length; j++) {
    k++;
    if (num2[j] > num2[i]) {
    // 交换元素
    temp = num2[j];
    num2[j] = num2[i];
    num2[i] = temp;
    }
    }
    }
    for (int i = 0; i < num2.length; i++) {
    System.out.print(num2[i] + " ");
    }
    System.out.println();
    System.out.println("k = " + k);
    }
      

  6.   

    减少不必要的循环次数而已 看不懂DEBUG进去看下变量值就明白了
      

  7.   


    怎么会算出n^2的?
    小循环的次数依次为
    n-1, n-2, n-3, ..., 1
    所以总次数为 1+2+3+...+n-1 = n(n-1)/2而且你的那个不是冒泡,是选择排序,属于不稳定排序,也就是说不能保证排序前的顺序
    如 22, 1, 3 升序排序,经过排序后,第1个2就排到第2个2后面去了
      

  8.   

    for(int j=0;j<num2.length-1-i;j++){ //这里我有点不懂,把num2.length-1-i后面的-i去掉可以一样用,这是为
    这句是 -i 是去除掉已经排好序的数,每次循环排序的时候肯定有一个数被排好,既然这个数已经被排好了,所以下次比较的时候就没有必要和这个数比较了!故去掉这个数  也就是 -i