排序演算法(二)——氣泡排序
阿新 • • 發佈:2019-01-08
氣泡排序演算法的運作如下:
- 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
- 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
- 針對所有的元素重複以上的步驟,除了最後一個。
- 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
氣泡排序總的平均時間複雜度為
package cn.kimtian.sort; import java.util.Arrays; /** * 這是一個氣泡排序演算法 * * @author kimtian */ public class BubbleSort { public static void main(String[] args) { int[] arr = new int[]{5, 7, 2, 9, 4, 1, 23, 4, 0}; bubbleSort(arr); System.out.println(Arrays.toString(arr)); } /** * 氣泡排序 * 共需要比較length-1 輪 * 如果兩個數相比,第一個數>第二個數,則交換位置 * 若第一個數< 第二個數 ,則不動 * {5,7,2,9,4,1,23,4,0} * 第一輪:{5,2,7,4,1,9,4,0,23} * 第二輪:{2,5,4,1,7,4,0,9,23} * 第三輪:{2,4,1,5,4,0,7,9,23} * 第四輪:{2,1,4,4,0,5,7,9,23} * 第五輪:{1,2,4,0,4,5,7,9,23} * 第六輪:{1,2,0,4,4,5,7,9,23} * 第七輪:{1,0,2,4,4,5,7,9,23} * 第八輪:{0,1,2,4,4,5,7,9,23} * * @param arr 需要排序的陣列 */ public static void bubbleSort(int[] arr) { //控制比較的輪數 for (int i = 0; i < arr.length - 1; i++) { //控制比較的次數 for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int mid = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = mid; } } } } }