js排序算法基礎--選擇排序

選擇排序

選擇排序是一種原址比較排序算法。該算法與冒泡排序複雜度同樣都包含兩個循環,複雜度爲O(n2);算法

思路:找到數據結構中的最小值放到第一位,而後找到第二小的放到第二位。數組

function selectionSort(array) {
    var length = array.length,
        indexMin;
    for (var i = 0; i < length - 1; i++) {
        //假如循環要進行length輪,當進行到倒數第二輪的時候,只剩下兩個未排序的數,找到最小的調換順序後,另外一位天然到位,因此外層只進行length-1
        indexMin = i;
        for (var j = 1; j < length; j++) {
            if (array[indexMin] > array[j]) {
                indexMin = j;
            }
        }
        if (i !== indexMin) {
            swap(array, i, indexMin)
        }
    }
}

外循環迭代數組,並控制迭代輪數。內循環對每一項進行排序,當內循環結束,將得出數組第n小的值。數據結構

因此每進行一次內循環,就會有一個最小值被排序,因此,咱們能夠對內循環進行改造。spa

function selectionSort(array) {
    var length = array.length,
        indexMin;
    for (var i = 0; i < length - 1; i++) {
        indexMin = i;
        for (var j = i + 1; j < length; j++) {
            if (array[indexMin] > array[j]) {
                indexMin = j;
            }
        }
        if (i !== indexMin) {
            swap(array, i, indexMin)
        }
    }
}
相關文章
相關標籤/搜索