zoukankan      html  css  js  c++  java
  • Python实现计数排序

    计数排序:

    1. 时间复杂度为O(n+k)
    2. 空间复杂度为O(n+k)
    3. 稳定性:稳定
    4. n为数组元素个数,k为数据最大值

    计数排序算法步骤:

    • 计数排序不是比较数值排序,是记录数据出现次数的一种排序算法
    • 找出待排数组中最大值
    • 额外一个数组记录待排数组值出现的次数
    • 循环打印存储数值次数的数组下标值

    动画演示:

    python实现:

    #!/usr/bin/env python
    # -*- encoding: utf-8 -*-
    '''
    @File        :CountingSort.py
    @Description :
    @CreatTime   :2020/08/21 09:42:54
    @Author      :Yunhgu
    @Version     :1.0
    '''
    
    def countingSort(arr, maxValue):
        bucketLen = maxValue+1
        bucket = [0]*bucketLen
        for a in arr:
            if not bucket[a]:
                bucket[a]=0
            bucket[a]+=1
        arr.clear()
        for i in range(len(bucket)):
            while bucket[i]>0:
                arr.append(i)
                bucket[i]-=1
        return arr
    
    if __name__ == "__main__":
        int_list = [1,8,6,5,6,6,8,4,8]
        c = countingSort(int_list,10)
        print(c)
    不论你在什么时候开始,重要的是开始之后就不要停止。 不论你在什么时候结束,重要的是结束之后就不要悔恨。
  • 相关阅读:
    背景图片自适应大小(平铺)
    墨卡托投影示意图
    C# 两个类的实例之间相同属性的值的复制
    C# 并行编程 Task
    C# 并行编程 PLINQ
    C# 并行编程 Parallel
    仰望星空
    Ubuntu的人道精神
    神经网络简介
    并行计算简介
  • 原文地址:https://www.cnblogs.com/yunhgu/p/13570392.html
Copyright © 2011-2022 走看看