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)
    不论你在什么时候开始,重要的是开始之后就不要停止。 不论你在什么时候结束,重要的是结束之后就不要悔恨。
  • 相关阅读:
    [Noip2016]天天爱跑步
    [ioi2008]Island 岛屿
    [Poi2012]Rendezvous
    RCTF2019 next_php
    WinSocket编程笔记(五)
    PTA的Python练习题(二十一)
    WinSocket编程笔记(四)
    PTA的Python练习题(二十)
    WinSocket编程笔记(三)
    WinSocket编程笔记(二)
  • 原文地址:https://www.cnblogs.com/yunhgu/p/13570392.html
Copyright © 2011-2022 走看看