排序算法(八)--基数排序

基数排序的思想:基数排序并不是比较排序,是桶排序的一种,基数排序要求,在基数排序之前先必须知道排序前的位数,然后将个位数先排,如果相等放在一个桶里,然后是十位,然后是百位,以此类推。
基数排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var radixSort = (arr, numberLength) => {
let mod = 10
let dev = 1
let counter = []
for (let i = 0;
i < numberLength;
i++, mod *= 10, dev *= 10) {
for (let j = 0; j < arr.length;j++) {
let num = parseInt((arr[j] % mod) / dev)
if (!counter[num]) {
counter[num] = []
}
counter[num].push(arr[j])
}
let pos = 0
for (let m = 0; m < counter.length; m++) {
let value = null
if (counter[m]) {
while (value = counter[m].shift()) {
arr[pos++] = value
}
}
}
}
return arr
}
let arr = [342, 234, 675, 543, 23, 543, 764]
// 3是表示最大数的个数
console.log(radixSort(arr, 3))
// [23, 234, 342, 543, 543, 675, 764]

注:基数排序和计数排序是有异曲同工之妙,他们都是在特定的情况下,才可以的。基数排序是稳定的。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Lee
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信