【计数排序~python】

本文介绍了计数排序算法的实现,该算法在已知列表数值范围的情况下能达到O(n)的时间复杂度。通过对比计数排序和Python内置排序函数`sort()`的运行时间,展示了不同排序算法在处理大量数据时的效率差异。适用于数值范围有限的大规模列表排序场景。
摘要由CSDN通过智能技术生成


计数排序:

# -*- coding = utf-8 -*-
# @Time : 2022/5/13 11:43
# @Author : lxw_pro
# @File : py-11.py
# @Software : PyCharm

# 计数排序:
'''
对列表进行排序,已知列表中的数范围都在0到100之间。
设计时间复杂度为O(n)的算法。

'''
import time
start = time.time()

import random, copy
def c_sort(li, max_c=100):
    c = [0 for _ in range(max_c+1)]
    for val in li:
        c[val] += 1
    li.clear()
    for i, val in enumerate(c):
        for j in range(val):
            li.append(i)


li = [random.randint(0, 100) for _ in range(10000)]
# print(li)
# c_sort(li)
# print(li)

li1 = copy.deepcopy(li)
c_sort(li1)

end1 = time.time()
print(end1-start)   # 自测时间复杂度


def sys_sort(li):
    li.sort()


li2 = copy.deepcopy(li)
sys_sort(li2)
end2 = time.time()
print(end2-start)   # 系统时间复杂度

上一章链接:二叉搜索树~查询、插入、删除

江湖一言:

没有人会帮组一个毫无价值的人,所以你必须要好好经营自己,就算跌入谷底,也要有与人交换的筹码。

持续更新中…

评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值