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

