排序演算法 五 基數排序

2021-09-29 07:47:58 字數 1304 閱讀 8749

概念

時間複雜度

最好:o(n * k),k表示最大值的位數。

最壞:o(n * k)

平均:o(n * k)

演示
[399 ,298,98,1] 的排序過程

1.先把資料變成相同位數的值

399298

098001

2. 從個位數開始遍歷

001298

098399

3 十位數遍歷

001298

098399

4. 百位數遍歷

001098

298399

可想而知,如果是資料量特別大的數,這種處理會非常費勁

**

function

radix_sort

(nums)

return sum;

}// 第一維表示位數即0-9,第二維表示裡面存放的值

let arr = array.

from

(array(10

)).map((

)=>

array()

);let max = math.

max(

...nums)

;//算出來最大的是 幾位數

let maxdigits =

getdigits

(max)

;for

(let i =

0, len = nums.length; i < len; i++

)// 迴圈判斷每個位數

for(

let i = maxdigits -

2; i >=

0; i--)}

}// 修改回原陣列

let res =

.concat.([

], arr)

; nums.

foreach

((val, index)

=>)}

var sortarr =[9

,6,3

,5,2

,1,7

,343,6

,643

,243

,544,5

,63,234,0

,56,123

]radix_sort

(sortarr)

console.

log(sortarr)

// [0, 1, 2, 3, 5, 5, 6, 6, 7, 9, 56, 63, 123, 234, 243, 343, 544, 643]

排序演算法 基數排序

基數排序 思想 基數排序屬於 分配式排序 分為高位優先法msd和低位優先法lsd 低位優先法lsd 從最低位k0開始排序 對於排好的序列再用次低位k1排序 依次重複,直至對最高位kd 1排好序後,整個序列稱為有序的 這是乙個分 收 分 收 分 收的過程 特點 穩定 空間複雜度 o dn 時間複雜度 ...

排序演算法 基數排序

一 基數排序的思想 不直接比較數與數的大小。把待排序的整數按位分,分為個位,十位 從小到大依次將位數進行排序。實際上分為兩個過程 分配和收集。分配就是 從個位開始,按位數從小到大把資料排好,分別放進0 9這10個桶中 收集就是 依次將0 9桶中的資料放進陣列中 重複這兩個過程直到最高位 二 過程 比...

排序演算法 基數排序

基數排序稱桶排序。它按照記錄的各位值逐步進行排序。適用於整數型別的排序。基數排序不同於別的排序方法通過比較和交換來排序,它是通過按照桶來分配和收集的方法實現的。基本思想 假設待排序的記錄都是m位d進製 不足m位的高位補0 設定d個桶 0,1,d 1 首先將序列中的記錄按照最低位值的大小分配到各個桶中...