2020-01-29 计数排序

function countingSort(arr) {
  const len = arr.length
  if (len <= 1) return arr

  const max = getMaxVal(arr)
  const counts = Array(max + 1).fill(0)

  // 计算每个元素的个数,放入到counts桶中
  // counts下标是元素,值是元素个数
  arr.forEach(ele => {
    counts[ele]++
  })

  let sortedIndex = 0
  counts.forEach((count, i) => {
    while (count-- > 0) {
      arr[sortedIndex++] = i
    }
  })

  return arr
}

function getMaxVal(arr) {
  let max = arr[0]
  for (let i = 1; i < arr.length; i++) {
    (arr[i] > max) && (max = arr[i])
  }

  return max
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容