排序算法——選擇排序

原理

數(shù)據(jù)分為 有序 | 無(wú)序兩個(gè)部分。以升序?yàn)槔? 遍歷未排序部分,找到最小值,加到有序末尾。重復(fù)該過(guò)程,直到有序部分等于數(shù)據(jù)源長(zhǎng)度。

復(fù)雜度分析

平均時(shí)間復(fù)雜度為O(n^2)
時(shí)間復(fù)雜度最壞為O(n^2)
空間復(fù)雜度為 O(1)
不穩(wěn)定

代碼實(shí)現(xiàn)

public void sort(List<V> srcList, Comparator<V> comparator) {
        if (srcList == null || srcList.size() <= 2) {
            return;
        }
        V min = null;
        V element = null;
        int minIndex = 0;
        for (int index = 0; index < srcList.size(); index++) {
            for (int j = index; j < srcList.size(); j++) {//找到最小值
                element = srcList.get(j);
                if (min == null || comparator.compare(element, min) < 0) {
                    minIndex = j;
                    min = element;
                }
            }

            V temp = srcList.get(index);
            srcList.set(index, min);//最小值加到有序末
            srcList.set(minIndex, temp);
            min = null;
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容