Java數據結構(10)----冒泡排序

冒泡排序

先上代碼

public static void sort(int[] array) {
		for(int i = 0;i<array.length-1;i++) {
			for(int j = i+1;j<array.length;j++) {
				if(array[i]>array[j]) {
					int temp = array[i];
					array[i] = array[j];
					array[j] = temp;
				}
			}
		}
		//打印
		for(int i = 0;i<array.length;i++) {
			System.out.println(array[i]);
		}
	}

思路:

重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。
即比較兩個相鄰的元素,將值大的元素交換到右邊,如果遇到相等的值不進行交換,那這種排序方式是穩定的排序方式。
假使有個數組
16,6,27,14,9;
第一趟排序:
第一次排序:16和6進行比較 16>6 交換位置 【6,16,27,14,9】
第二次排序:16和27進行比較 16<27不交換位置【6,16,27,14,9】
第三次排序:27和14進行比較 27>14 交換位置【6,16,14,27,9】
第四次排序:27和9比較 27>9 交換位置【6,16,14,9,27】
第二趟排序:
第一次排序:6和16進行比較 不 交換位置 【6,16,14,9,27】
第二次排序:16和14進行比較 16>14交換位置【6,14,16,9,27】
第三次排序:16和9進行比較 16>9 交換位置【6,14,9,16,27】
第三趟排序:
第一次排序:6和14進行比較 6<14 不交換位置【6,14,9,16,27】
第二次排序:14和9進行比較 14>9 交換位置【6,9,14,16,27】
第四趟排序:
第一次排序:6和14進行比較 6<14 不交換位置【6,9,14,16,27】
總結:
N個數字要排序完成,總共進行N-1趟排序,每i趟的排序次數爲(N-i)次,所以可以用雙重循環語句,外層控制循環多少趟,內層控制每一趟的循環次數

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