排序算法-计数排序

package sort
//计数排序
//计数排序
func CountingSort(arr []int64) {
    //1.寻找最大值
    max := arr[0]
    base := arr[0]
    for _,item := range arr {
        if item > max {
            max = item
        }
        if item < base {
            base = item
        }
    }
    //2.建桶
    bucketList := make([]int64, max-base+1,max-base+1)
    for _,item := range arr {
        bucketList[item]++
    }

    //3.遍历
    index := 0
    for key,item := range bucketList {
        if item > 0 {
            var c int64
            for ;c < item;c++ {
                arr[index] = base+int64(key)
                index++
            }
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原理解析 原理上来说计数排序采用的是空间换取事件的方法。步骤: 创建一个哈希表用于记录数据。 遍历数组,把数组中的...
    2b61575c37fd阅读 1,033评论 0 1
  • 核心思想 计数排序不是基于比较的排序算法,算法的核心有3点:统计原数组中每个元素出现的次数。以原数组中的元素为下标...
    Alisallon阅读 4,711评论 0 1
  • 计数排序 基本思想:不通过比较,计下每个元素的出现次数,统计小于这个元素的个数N,将其放在N位。例如{7,6,2,...
    守敬阅读 6,514评论 1 2
  • 计数排序是一种非比较的排序,这种方法思路大概是先算出待排序数据里面的数字分别出现多少次,然后再依据这个存放进新的数...
    KPort阅读 2,435评论 0 1
  • 题外话计数排序时间性能比之前的排序算法高,在实际中应用较多,只需要O(n)时间即可完成排序。计数排序思想比较巧妙,...
    哪有岁月静好阅读 2,454评论 0 0