public static void sort(int[] array) { int minIndex; for (int i = 0; i < array.length; i++) { minIndex = i; for (int j = i + 1; j < array.length; j++) { if (array[minIndex] > array[j]) { minIndex = j; } } swap(array, i, minIndex); } } public static void swap(int[] array, int a, int b) { int temp = array[a]; array[a] = array[b]; array[b] = temp; }
選擇排序和冒泡排序的思路大體是同樣的,只不過每次在外層掃描後都找到最小的值,而後進行交換而已。相對於冒泡排序來說的話只是減小了交換的次數。java
最優時間複雜度:O(n^2)spa
平均時間複雜度:O(n^2)code
最壞時間複雜度:O(n^2)orm
平均空間複雜度:O(1)排序
選擇排序是不穩定的,由於在選擇過程當中會涉及到先後交換的動做,因此選擇排序是不穩定的。
ci