用JS寫計數排序 基數排序

2021-09-16 12:33:51 字數 993 閱讀 1650

計數排序就是簡單的桶排序,乙個桶代表陣列中乙個數出現的個數,所以需要乙個和陣列數字範圍一樣大的輔助陣列,一般用在範圍小於100的排序,時間複雜度為o(n),空間複雜度為陣列的數字範圍。

/**

* 範圍在 start - end 之間的排序

* 計數排序需要輔助陣列,該輔助陣列的長度是待排序陣列的範圍,所以一般用作範圍小於100的排序

*/function countsort(arr, start, end)

// 待排序陣列中的陣列出現,在桶子對應位置+1代表這個數出現的個數+1了

for (let i = 0; i < len; i++)

// 從第1項開始,桶陣列加上前乙個桶的個數,現在輔助陣列的意義變成了每一項的排名了。

for (let i = 1; i < suportarr.length; i++)

// 根據輔助陣列的排名,從後往前賦值

for (let i = len - 1; i >= 0; i--)

return resarr;

}

基數排序是多躺的桶排序

var radix = 16; // 基數,可以為任何數,越大趟數越小,但是桶數越多,最好根據最大數字進行定義。

function _roundsort(arr, round, radix)

// 將陣列中的數放進對應的桶子中

for (let i = 0; i < arr.length; i++)

// 將陣列重新根據桶子進行排序

var index = 0;

for (let i = 0; i < buckets.length; i++)

}}function radixsort(arr, round)

return arr;

}console.log(radixsort([10,5,5,50,0,155,4622,5,1,4,2154], 4));

計數排序 基數排序

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

桶排序 基數排序 計數基數排序 Java

前面已經講述了很多排序演算法,但是他們的排序演算法都是基於兩個值之間的比較,通過決策樹的方法可以證明深度為d的二叉樹則最多有 一些好的排序演算法是可以達到時間複雜度是線性的,桶排序就是其中一種。比如有n個數,但是這些數的最大數不超過m。這個時候就可以定義乙個含有m個元素的陣列 初始值為0 然後遍歷n...

計數排序和基數排序

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