計算排序在對大數進行排序時需要創建一個非常大的額外的數組來容納這些數,所以非常浪費空間。
基數排序:無論多大的數進行排序,10個空格的數組即可。

# JavaScript
如何取出一個數字的某一位置數字來:
取個位:parseInt(num % 10 / 1)
取十位:parseInt(num % 100 / 10)
取百位:parseInt(num % 1000 / 10)
...
~~~
// maxRadix :最大進制位數,比如:1024和30最大進制位置是4
function radixSort(arr, maxRadix) {
let buckets = [] // 桶
let mod = 10 // 取模時的數字
let dev = 1 // 除時的數字
let num // 取的每一位的數值
// 取個數、取十數、取百數 ...
for(let i=0; i<maxRadix; i++,mod*=10,dev*=1) {
// 循環數組中的每個數并取個/十/百位的數并放到桶中
for(let j=0;j<arr.length;j++) {
num = parseInt(arr[j] % mod / dev)
// 放到相應的桶中
if(buckets[num] == null) {
buckets[num] = []
}
buckets[num].push(arr[j])
}
// 依次從桶中取出數
let pos = 0 // 放在原數組的位置
let value
for(let i=0; i<buckets.length;i++) {
if(buckets[i]) {
while(value = buckets[i].shift()) {
arr[pos++] = value
}
}
}
}
}
~~~