選擇排序是一種原址比較排序算法。該算法與冒泡排序複雜度同樣都包含兩個循環,複雜度爲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) } } }