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)
    不论你在什么时候开始,重要的是开始之后就不要停止。 不论你在什么时候结束,重要的是结束之后就不要悔恨。
  • 相关阅读:
    pycharm 2016.2注册码
    python selenium2
    webdriver.py--解说
    Sahi ---实现 Web 自动化测试
    性能测试
    看云-git类的书籍写作
    IntelliJ IDEA 对于generated source的处理
    各种常用的序列化性能的对比
    rpc框架--grpc-java
    grpc mvn protobuf:compile 过程
  • 原文地址:https://www.cnblogs.com/yunhgu/p/13570392.html
Copyright © 2011-2022 走看看