表現最穩定的排序算法之一(這個穩定不是指算法層面上的穩定哈),由於不管什麼數據進去都是O(n²)的時間複雜度…..因此用到它的時候,數據規模越小越好。惟一的好處可能就是不佔用額外的內存空間了吧。理論上講,選擇排序可能也是平時排序通常人想到的最多的排序方法了吧。javascript
選擇排序(Selection-sort)是一種簡單直觀的排序算法。它的工做原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,而後,再從剩餘未排序元素中繼續尋找最小(大)元素,而後放到已排序序列的末尾。以此類推,直到全部元素均排序完畢。java
n個記錄的直接選擇排序可通過n-1趟直接選擇排序獲得有序結果。具體算法描述以下:算法
<1>.初始狀態:無序區爲R[1..n],有序區爲空;數組
<2>.第i趟排序(i=1,2,3…n-1)開始時,當前有序區和無序區分別爲R[1..i-1]和R(i..n)。該趟排序從當前無序區中-選出關鍵字最小的記錄 R[k],將它與無序區的第1個記錄R交換,使R[1..i]和R[i+1..n)分別變爲記錄個數增長1個的新有序區和記錄個數減小1個的新無序區;blog
<3>.n-1趟結束,數組有序化了。排序
代碼實現:索引
function selectionSort(arr) { var len = arr.length; var min; for(var i =0;i<len-1;i++) { min=i; for(var j=i+1;j<len;j++) { if(arr[min]>arr[j]){ min=j;//找到最小值索引 } } tep=arr[min]; arr[min]=arr[i]; arr[i]=tep } return arr; }
運行:ip
console.time('ss') console.log(sectionSort([3,4,51,22,111])) console.timeEnd('ss')
結果:內存