JS排序之選擇排序詳解
本文為大家分享了JS選擇排序的具體代碼,供大家參考,具體內(nèi)容如下
說(shuō)明
- 時(shí)間復(fù)雜度指的是一個(gè)算法執(zhí)行所耗費(fèi)的時(shí)間
- 空間復(fù)雜度指運(yùn)行完一個(gè)程序所需內(nèi)存的大小
- 穩(wěn)定指,如果a=b,a在b的前面,排序后a仍然在b的前面
- 不穩(wěn)定指,如果a=b,a在b的前面,排序后可能會(huì)交換位置
--JS選擇排序--
原理
首先從原始數(shù)組中找到最小的元素,并把該元素放在數(shù)組的最前面,然后再?gòu)氖O碌脑刂袑ふ易钚〉脑?,放在之前最小元素的后面,知道排序完畢?/p>
時(shí)間復(fù)雜度,空間復(fù)雜度,穩(wěn)定性
- 平均時(shí)間復(fù)雜度O(n*n)
- 最好情況O(n*n)
- 最差情況O(n*n)
- 空間復(fù)雜度O(1)
- 穩(wěn)定性:不穩(wěn)定
選擇排序的寫(xiě)法
var example=[8,94,15,88,55,76,21,39];
function selectSort(arr){
var len=arr.length;
var minIndex,temp;
console.time('選擇排序耗時(shí)');
for(i=0;i<len-1;i++){
minIndex=i;
for(j=i+1;j<len;j++){
if(arr[j]<arr[minIndex]){
minIndex=j;
}
}
temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;
}
console.timeEnd('選擇排序耗時(shí)');
return arr;
}
console.log(selectSort(example));
解析
minIndex始終保存著最小值的位置的索引,隨著i的自增,遍歷的數(shù)組長(zhǎng)度越來(lái)越短,直到完成排序。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JavaScript實(shí)現(xiàn)經(jīng)典排序算法之選擇排序
- JavaScript 冒泡排序和選擇排序的實(shí)現(xiàn)代碼
- 基于JavaScript實(shí)現(xiàn)的快速排序算法分析
- 基于JavaScript實(shí)現(xiàn)的希爾排序算法分析
- 基于JavaScript實(shí)現(xiàn)的插入排序算法分析
- JavaScript實(shí)現(xiàn)經(jīng)典排序算法之插入排序
- JavaScript實(shí)現(xiàn)經(jīng)典排序算法之冒泡排序
- Javascript中的常見(jiàn)排序算法
- js算法中的排序、數(shù)組去重詳細(xì)概述
- JavaScript中幾種常見(jiàn)排序算法小結(jié)
- javascript快速排序算法詳解
- JavaScript實(shí)現(xiàn)的選擇排序算法實(shí)例分析
相關(guān)文章
JavaScript 學(xué)習(xí)點(diǎn)滴記錄
HTML DOM (Document Object Model文檔對(duì)象模型) DOM是一種與瀏覽器,平臺(tái),語(yǔ)言的接口,使得你可以訪問(wèn)頁(yè)面其他的標(biāo)準(zhǔn)組件. DOM是以層次結(jié)構(gòu)組織的節(jié)點(diǎn)或信息片斷的集合.2009-04-04
關(guān)于javascript sort()排序你可能忽略的一點(diǎn)理解
最近在研究Javascript發(fā)現(xiàn)了其中一些之前忽略的問(wèn)題,所以想著總結(jié)分享出來(lái),下面這篇文章主要給大家介紹了關(guān)于javascript sort()排序你可能忽略的一點(diǎn)理解,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-07-07
js實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
JavaScript實(shí)現(xiàn)簡(jiǎn)易tab欄切換案例
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)易tab欄切換案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
大轉(zhuǎn)盤(pán)抽獎(jiǎng)小程序版 轉(zhuǎn)盤(pán)抽獎(jiǎng)網(wǎng)頁(yè)版
這篇文章主要為大家詳細(xì)介紹了大轉(zhuǎn)盤(pán)抽獎(jiǎng)小程序版和網(wǎng)頁(yè)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
JavaScript利用Immerjs實(shí)現(xiàn)不可變數(shù)據(jù)
Immerjs?是一個(gè)用于管理?JavaScript?不可變數(shù)據(jù)結(jié)構(gòu)的庫(kù),它可以幫助我們更輕松地處理狀態(tài)的變化,并減少冗余代碼。本文就來(lái)帶大家揭秘如何利用Immerjs實(shí)現(xiàn)不可變數(shù)據(jù),感興趣的可以了解一下2023-04-04
關(guān)于Object.entries()方法的使用和實(shí)現(xiàn)方式
這篇文章主要介紹了關(guān)于Object.entries()方法的使用和實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Bootstrap實(shí)現(xiàn)響應(yīng)式導(dǎo)航欄效果
這篇文章主要介紹了Bootstrap實(shí)現(xiàn)響應(yīng)式導(dǎo)航欄效果,導(dǎo)航欄是一個(gè)很好的功能,是Bootstrap網(wǎng)站的一個(gè)突出特點(diǎn),本文帶領(lǐng)大家學(xué)習(xí)實(shí)現(xiàn)Bootstrap導(dǎo)航欄,需要的朋友可以參考下2015-12-12

