- 基数排序:是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。
- 时间复杂度:O(nlog(r)m) (其中r为所采取的基数,而m为堆数)
- 稳定性:稳定
- 复杂性:较复杂
- 应用:当范围已经知道,而且空间不是很重要的情况下
const radixSort = (arr) => {
let length = arr.length
if (length <= 1) {
return arr
}
let maxDigit = String(parseInt(Math.max(...arr))).length // 取最大位数
let mod = 10;
let dev = 1;
let counter = []
for (let i = 0; i < maxDigit; i++, dev *= 10, mod *= 10) {
for(let j = 0; j < arr.length; j++) {
let bucket = parseInt((arr[j] % mod) / dev);
counter[bucket] = counter[bucket] == null ? [] : counter[bucket]
counter[bucket].push(arr[j]);
}
let pos = 0;
for(let j = 0; j < counter.length; j++) {
let value = null;
if(counter[j]!=null) {
while ((value = counter[j].shift()) != null) {
arr[pos++] = value;
}
}
}
}
return arr;
}
上一篇: js实现归并排序
本文为本人学习总结,如有雷同,可联系本人立即修改或者删除