计数排序

2020-12-26  本文已影响0人  Adder

计数排序

使用哈希表的原理,输出从顺序的结果列表

var testArr = [12, 72, 34, 95, 43, 5, 24, 67, 6, 8, 79, 55, 33, 24, 3];
let obj = {};
let max = testArr[0];
for (let i in testArr) {
  obj[testArr[i]] = testArr[i] in obj ? obj[testArr[i]] + 1 : 1;
  if (testArr[i] > max) {
    max = testArr[i];
  }
}
console.log('哈希表\n', obj)
const sortArr = [];
for (let i = 0; i <= max; i++) {
  if (testArr.find(it => it === i)) {
    if (obj[i] > 1) {
      // 重复的数字
      for (let j = 1; j <= obj[i]; j++) {
        sortArr.push(i)
      }
    } else {
      sortArr.push(i)
    }
  }
}
console.log(sortArr);
上一篇 下一篇

猜你喜欢

热点阅读