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)
复制代码

 

posted @   不能说的秘密  阅读(1173)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示