js 計(jì)數(shù)排序的實(shí)現(xiàn)示例(升級(jí)版)
原版計(jì)數(shù)排序,桶的容積需要一個(gè)可以包含最小值到最大值所有可能出現(xiàn)的數(shù)字。這里我們可以將桶換成對(duì)象,利用對(duì)象的自動(dòng)排序與不能出現(xiàn)相同屬性名的鍵值對(duì)這兩個(gè)特點(diǎn),不需要一個(gè)有序容積的桶,隨意新增鍵值對(duì)即可。代碼如下
var ary=[23,14,12,24,53,31,53,35,46,12,62,23]
function countSort(arr){
let obj={};
//遍歷原數(shù)組,給對(duì)象新增鍵值對(duì),如果已經(jīng)存在就對(duì)應(yīng)的屬性值++,如果不存在則新增鍵值對(duì)
for(let i=0;i<arr.length;i++){
if(!obj[arr[i]]){
obj[arr[i]]=1;
}else{
obj[arr[i]]++;
}
}
let index=0;
//遍歷對(duì)象屬性名,按順序放回覆蓋原數(shù)組
for(let key in obj){
while(obj[key]>0){
arr[index]=Number(key);
obj[key]--;
index++
}
}
return arr;
}
console.log(countSort(ary));
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript封裝的常用工具類庫(kù)bee.js用法詳解【經(jīng)典類庫(kù)】
這篇文章主要介紹了JavaScript封裝的常用工具類庫(kù)bee.js用法,結(jié)合實(shí)例形式詳細(xì)分析了經(jīng)典類庫(kù)bee.js常見(jiàn)的手機(jī)、身份證、郵箱校驗(yàn),以及字符串操作、四則運(yùn)算、正則驗(yàn)證等相關(guān)操作的封裝與使用技巧,需要的朋友可以參考下2018-09-09
JavaScript實(shí)現(xiàn)動(dòng)態(tài)表單生成
這篇文章主要來(lái)和大家一起深入探討如何使用JavaScript實(shí)現(xiàn)一個(gè)動(dòng)態(tài)表單生成器,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2024-01-01
詳解微信小程序開(kāi)發(fā)用戶授權(quán)登陸
這篇文章主要介紹了微信小程序開(kāi)發(fā)用戶授權(quán)登陸,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
JS監(jiān)聽(tīng)滾動(dòng)和id自動(dòng)定位滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了JS監(jiān)聽(tīng)滾動(dòng)和id自動(dòng)定位滾動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12

