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
}
2020-01-29 计数排序
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 解决方案 Double dabo = 12345678.88d; DecimalFormat df = new D...