冒泡排序步驟詳解

以下都是個人見解,歡迎探討!
此篇博文只是解釋一下Java裏面冒泡排序的步驟,爲什麼這麼寫,相信大家已經在衆多博文中知道了冒泡排序的原理等知識,這裏就不介紹了。

		//冒泡排序
        int[] arr = {1,3,5,7,9,10,8,6,4,2,0};//11位
        int temp = 0;//用來中轉數值
        //從小到大排序
        for (int i = 0; i < arr.length-1; i++) {
            /*
            * 爲什麼是arr.length-1
            * 是因爲每次循環就是把最大值放到最後一位,
            * 第一次就是把第一大的數(10)放到第11位,
            * 第二次就是把第二大的數(9)放到第10位,
            * ........
            * 第十次就是把第十大的數(1)放到了第2位,
            * 那麼第十一大(0)的數就自然在第1位了,沒必要進行下一次了
            */

            for (int j = 0; j < arr.length-i-1; j++) {
                /*
                * 爲什麼是arr.length-i-1,
                * arr.length-i:
                *   因爲第i次遍歷就會把第i大的數放到倒數第i個位置了,
                *   如:第一次(i=0)就把10放到倒數第一個(第11)個位置,
                *   那麼我們就沒必要去比較這個位置及後面的數了
                * -1:
                *   是爲了讓j+1不越界
                * */

                if (arr[j] > arr[j+1]){
                    //相鄰比較,如果左邊比右邊大,交換位置
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
            System.out.println("第i="+i+"次之後的數組:"+ Arrays.toString(arr));
        }

運行結果:
第i=0次之後的數組:[1, 3, 5, 7, 9, 8, 6, 4, 2, 0, 10]
第i=1次之後的數組:[1, 3, 5, 7, 8, 6, 4, 2, 0, 9, 10]
第i=2次之後的數組:[1, 3, 5, 7, 6, 4, 2, 0, 8, 9, 10]
第i=3次之後的數組:[1, 3, 5, 6, 4, 2, 0, 7, 8, 9, 10]
第i=4次之後的數組:[1, 3, 5, 4, 2, 0, 6, 7, 8, 9, 10]
第i=5次之後的數組:[1, 3, 4, 2, 0, 5, 6, 7, 8, 9, 10]
第i=6次之後的數組:[1, 3, 2, 0, 4, 5, 6, 7, 8, 9, 10]
第i=7次之後的數組:[1, 2, 0, 3, 4, 5, 6, 7, 8, 9, 10]
第i=8次之後的數組:[1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10]
第i=9次之後的數組:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章