選擇排序

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

相關文章
相關標籤/搜索