能夠看出,通過一次冒泡操做以後, 6這個元素已經存儲在正確的位置上。要想完成全部數據的排序,咱們只要進行6次這樣的冒泡操做就好了。
java
public static void bubbleSort(int[] arr) { if (arr.length <= 1) return; for (int i = 0; i < arr.length; i++) { boolean b = false; for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; b = true; } } if (!b) { break; } } }
public static void insertionSort(int[] arr) { int n = arr.length; if (n <= 1) { return; } for (int i = 0; i < n; i++) { int value = arr[i]; int j = i - 1; // 查找插入的位置 for (; j >= 0; --j) { if (arr[j] > value) { arr[j + 1] = arr[j];//移動數據 } else { break; } } arr[j + 1] = value;//插入數據 } }
public static void selectionSort(int[] arr) { int length = arr.length; if (length == 1) { return; } int x; for (int i = 0; i < length; i++) { x = i; for (int j = i + 1; j < length; j++) { if (arr[x] > arr[j]) { x = j; } } if(x != i){ int tmp = arr[i]; arr[i] = arr[x]; arr[x] = tmp; } } }
空間複雜度 | 是否穩定 | 最好時間複雜度 | 最壞時間複雜度 | 平均時間複雜度 | |
---|---|---|---|---|---|
冒泡排序 | Q(1) | 是 | Q(n) | Q(n²) | Q(n²) |
插入排序 | Q(1) | 是 | Q(n) | Q(n²) | Q(n²) |
選擇排序 | Q(1) | 否 | Q(n²) | Q(n²) | Q(n²) |