JS 排序演算法之計數和基數排序

2022-08-22 12:48:12 字數 1159 閱讀 5819

目錄

利用陣列的index是天然有序的特徵來排序. 例如: 已知乙個亂序陣列的範圍是0~10,長度未知, 我們只需要遍歷一遍陣列,點出每個值出現的次數,並用乙個新陣列來儲存這個次數,就能做到排序. 假如數字1出現3次, 那麼新陣列newary[1]=3, 在新陣列遍歷的時候輸出3次"1"

特點: 先遍歷陣列計算數值出現次數, 然後就排序好了...

function countsort(ary) 

ary = ;

// 給ary重新賦值

for(var i =0; i0; k--)

}newary = null;

return ary;

}

效果演示:

從左到右按位排序, 先排個位, 再排十位,百位... 需要用到計數排序的方法-使用陣列計數

function radixsort(ary) 

let rate = 1,

k= null;

for (let i = 1; i <= t; i++) );

// 通過數字次數得到該數字應該在陣列中的位置

bucketary.reduce((total, item, index) => );

// 通過計算的順序將ary中數存入temp陣列中

for (let j = ary.length - 1; j >= 0; j--)

// 將temp相同位置的值負值給ary, 不能直接 ary = temp

ary = ary.map((item, index)=>temp[index]);

rate *= 10;

}temp = null;

bucketary = null;

return ary;

}

效果演示:

計數排序和基數排序

計數排序和基數排序是屬於線性級時間複雜度的排序方式,雖然沒有冒泡,選擇,快排演算法那些讓人廣為所知,但是這兩種排序方式在某些場合非常適用。計數排序是基數排序的基礎,最為關鍵的是 基數排序演算法是字尾陣列的關鍵 當然字尾陣列也可以用快排 字尾陣列是用於處理字串的一種非常優秀的資料結構,可以高效的處理很...

資料結構 排序演算法之計數排序與基數排序

一 計數排序 很好理解,就是對應每個數我們統計每個數字出現的次數,然後用乙個直接定址的雜湊表來存放資料,在通過遍歷這個雜湊表,進而就可以排好序了 如下所示 實現如下所示 void countsort int array,int size 開闢輔助空間 int range maxdata mindat...

計數排序 基數排序

一.計數排序 counting sort 基本思想 對每乙個輸入元素x,確定出小於x的元素個數。適用範圍 適用於輸入是由小範圍的整數構成的序列。穩定性 演算法是穩定的。具體實現 include using namespace std arr 初始輸入陣列,res 存放排序結果的陣列,hash臨時儲存...