選擇排序
概念:選擇排序大致的思路是找到數據結構中的最小值並將其放置在第一位,接着找到第二小的值並將其放在第二位,以此類推。
復雜度: O(n^2)
代碼實現
var swap = function (array, index1, index2){ var aux = array[index1]; array[index1] = array[index2]; array[index2] = aux; } var selectionSort = function(array) { var length = array.length,// {1}聲明一些將在算法內使用的變量 indexMin; for (var i = 0;i < length -1;i++) {// {2}外循環 indexMin = i;// {3}假設本迭代輪次的第一個值為數組最小值 for (var j = i;j < length;j++) {// {4}從當前i的值開始至數組結束 if (array[indexMin] > array[j]) {// {5}我們比較是否位置j的值比當前最小值小 indexMin = j; // {6};如果是,則改變最小值至新最小值 } } if (i !== indexMin) { swap(array, i, indexMin); // {7}最后,如果該最小值和原最小值不同(行{7}),則交換其值。 } } // 復雜度是O(n^2) return array; }
舉例:下圖是把[5,4,3,2,1]進行選擇排序的一個過程