JavaScript實現(xiàn)經(jīng)典排序算法之選擇排序
表現(xiàn)最穩(wěn)定的排序算法之一,因為無論什么數(shù)據(jù)進去都是O(n²)的時間復(fù)雜度.....所以用到它的時候,數(shù)據(jù)規(guī)模越小越好。唯一的好處可能就是不占用額外的內(nèi)存空間。
1)算法原理
先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續(xù)尋找最小(大)元素,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
2)算法描述和實現(xiàn)
n個記錄的直接選擇排序可經(jīng)過n-1趟直接選擇排序得到有序結(jié)果。具體算法描述如下:
<1>初始狀態(tài):無序區(qū)為R[1..n],有序區(qū)為空;
<2>第i趟排序(i=1,2,3...n-1)開始時,當(dāng)前有序區(qū)和無序區(qū)分別為R[1..i-1]和R(i..n)。該趟排序從當(dāng)前無序區(qū)中-選出關(guān)鍵字最小的記錄 R[k],將它與無序區(qū)的第1個記錄R交換,使R[1..i]和R[i+1..n)分別變?yōu)橛涗泜€數(shù)增加1個的新有序區(qū)和記錄個數(shù)減少1個的新無序區(qū);
<3>n-1趟結(jié)束,數(shù)組有序化了。
3)javascript代碼實現(xiàn)
function selectSort(arr){ var len = arr.length; var index,temp; for(var i = 0; i < len-1 ;i++){ index = i; for(var j = i + 1 ; j<len; j++){ if(arr[j] < arr[index]){//尋找最小的數(shù) index = j;//保存最小數(shù)的索引 } } temp = arr[i]; arr[i] = arr[index]; arr[index] = temp; } return arr; } var arr=[1,45,37,5,48,15,37,26,29,2,46,4,17,50,52]; console.log(selectSort(arr));
4)算法分析
最佳情況:T(n) = O(n2)
最差情況:T(n) = O(n2)
平均情況:T(n) = O(n2)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 圖文詳解Heap Sort堆排序算法及JavaScript的代碼實現(xiàn)
- Javascript實現(xiàn)快速排序(Quicksort)的算法詳解
- JavaScript算法系列之快速排序(Quicksort)算法實例詳解
- JS中數(shù)據(jù)結(jié)構(gòu)與算法---排序算法(Sort Algorithm)實例詳解
- js交換排序 冒泡排序算法(Javascript版)
- 幾種經(jīng)典排序算法的JS實現(xiàn)方法
- Javascript中的常見排序算法
- Javascript排序算法之合并排序(歸并排序)的2個例子
- JavaScript中幾種常見排序算法小結(jié)
- JS實現(xiàn)的計數(shù)排序與基數(shù)排序算法示例
- js實現(xiàn)常用排序算法
- JS中的算法與數(shù)據(jù)結(jié)構(gòu)之常見排序(Sort)算法詳解
相關(guān)文章
從js向Action傳中文參數(shù)出現(xiàn)亂碼問題的解決方法
Action獲取jsp表單中的中文參數(shù),只要整個項目都采用UTF-8編碼格式都不會出現(xiàn)亂碼問題;但JSP中用到JS,并從JS向Action傳中文參數(shù),就會出現(xiàn)中文亂的現(xiàn)象2013-12-12理解JavaScript的caller,callee,call,apply
文章挺好的,雖然我用的是jQuery,但感覺還是有些用的~~~2009-04-04