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)
不论你在什么时候开始,重要的是开始之后就不要停止。 不论你在什么时候结束,重要的是结束之后就不要悔恨。
原文地址:https://www.cnblogs.com/yunhgu/p/13570392.html