JAVA冒泡排序

菜鸟总有一段时间在众多技术面前不知如何下手,于是乎輾转反侧夜不能寐,思来想去,心已经乱了,怎么拉回来,要学技术,首先要进入状态, 那就先把状态培养好吧,先进入状态是首要条件,那就把以前的东西理一理吧,一来温故,而来心也平静了许多。 

        int[] a = {0,9,7,2,4,6,3,3,7};
        int num = a.length;
        //嵌套循环只做比较,不做数组改变动作,只有进入if时,才对数组的顺序做改变。
        for (int i = 0; i < num; i++) {
            //从数组的0下标开始遍历
            for (int j = i+1; j < num; j++) {
                /*依次拿到下标i的值,并依次和下标大于i的值去比较(比如i=0时,我们拿下标为0的值0去和下标为j(i+1))
                的值9去比较,发现0下标的值>大于0下标的值始终不成立,因此0下标的值始终不会变。
                第二个循环:i=1下标的值为9,内循环j的值第一次为7,if条件成立,进入条件判断,将下标i的值先用一个临时
                变量保存起来,然后将j也就是7赋值给下标i,这时下标i=7,j =9;此时数组为{0,7,9,...}进入第二次内循环,这是a[i]=7,依次与a[j]比较
                9,不满足;2,满足,进入if,将a[i]也就是7复制给临时变量temp,将a[j]也就是2赋值给下标i,此时数组为{0,2,9,7,...}
                进入内循环的j+1次比较,这时a[i]=2,和后边的任意a[j]比较条件始终不成立,数组不再做改变。
                第三个循环:i=2此时数组{0,2,9,7,4,....},a[i]=9,和a[j]=7,条件成立,置换位置{0,2,7,9,4,..},进入第二次内循环,
                a[i]=7,与a[j]=4成立,转换位置{0,2,4,9,7,...},进入第三次内循环,a[i]=4,直到a[j]=3成立,进入置换位置{0,2,3,9,4,..}
                直到内循环结束,不可能if成立,数组不在做改变。
                第四个循环:i=3此时数组{0,2,3,7,9,4,...},a[i]=7,只是我们就明白了,每一次内循环都是把下标i后的最小的值替换到
                下标i的位置,如果没有就维持现有数组不变进入下一个循环,直到i<num不成立,循环结束,整理出结果!
                 */
                if (a[i] >a[j]) {
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
        System.out.println("@@@"+ Arrays.toString(a));

这是升序,降序把>改<即可!

posted on 2018-03-30 21:36  ckx0709  阅读(194)  评论(0编辑  收藏  举报

导航