排序算法10-基数排序

2021-04-20  本文已影响0人  小杰66

基数排序

算法步骤:
1.将整数按位数切割成不同的数字,然后按每个位数分别比较
2.例如先按个位排序,然后按十位排序,由于此时个位是有序的所以先入列的肯定更小
3.继续依次比较更高位

function radixSort(arr) {
  //需要获取最大值的位数
  let counter = [];
  let maxValue = Math.max(...arr);
  let number = (maxValue + "").length;

  let mod = 10,
    dev = 1;
  for (let i = 0; i < number; i++, dev *= 10, mod *= 10) {
    for (let j = 0; j < arr.length; j++) {
      let bucket = parseInt((arr[j] % mod) / dev);
      if (!counter[bucket]) counter[bucket] = [];
      counter[bucket].push(arr[j]);
    }
    let pos = 0;
    for (let j = 0; j < counter.length; j++) {
      if (counter[j]) {
        while (counter[j].length) {
          arr[pos++] = counter[j].shift();
        }
      }
    }
  }
}
上一篇 下一篇

猜你喜欢

热点阅读