選擇排序

選擇排序

一.算法原理

每一次從代排序的數據元素中選出最小(或最大)的一個元素,存放在序列起始位置,直到所有代排數據元素排完.java

好比序列[6 4 5 2 1]先選出最小元素1排到起始位,依次從代排序列選出2,4,5,6.算法

二java簡單實現

public static void selectSort(int[] arr) {
        if (arr == null || arr.length == 0) {
            return;
        }
        int temp,k;
        for (int i=0; i<arr.length-1; i++) {
            k = i;
            for (int j=i+1; j<arr.length; j++) {
                if (arr[j] > arr[k]) {
                    k = j;
                }
            }
            if (i != k) {
                temp = arr[i];
                arr[i] = arr[k];
                arr[k] = temp;
            }
        }
    }

三.時間複雜度

與序列初始排序無關,分析代碼可知比較操做爲n(n-1)/2(內部for循環部分),而賦值操做與初始排序有關,正序時爲0,反序時爲3 n(n-1)/2 (3比較操做);
因此,選擇排序最差平均都是O(n^2)code

四.穩定性

選擇排序是一個不穩定的排序算法.
如序列[5,5,3]第一次排序就將3與第一個5進行交換.排序

相關文章
相關標籤/搜索