python进阶江湖
桶排序:
# -*- coding = utf-8 -*-
# @Time : 2022/5/13 12:20
# @Author : lxw_pro
# @File : py-12.py
# @Software : PyCharm
# 桶排序:
'''
桶排序的表现取决于数据的分布。
也就是需要对不同数据排序时采取不同的分桶策略。
平均情况时间复杂度:O(n+k)
最坏情况时间复杂度:O(n**2k)
空间复杂度:O(nk)
'''
import random
def t_sort(li, n=100, max_num=10000):
ts = [[] for _ in range(n)] # 创建桶
for val in li:
i = min(val // (max_num // n), n-1) # i 表示val放到几号桶里
ts[i].append(val) # 将val符合条件的所有元素追加到ts桶中
for j in range(len(ts[i])-1, 0, -1): # 保持桶内的顺序
if ts[i][j] < ts[i][j-1]:
ts[i][j], ts[i][j-1] = ts[i][j-1], ts[i][j]
else:
break
sor_li = [] # 新建一个空桶
for tol in ts:
sor_li.extend(tol) # 将tol所有元素添加到sor_li空桶中
return sor_li
li = [random.randint(0, 10000) for i in range(10000)]
# print(li)
li = t_sort(li)
print(li)
上一章链接:二叉树的前序、中序、后序及层次遍历
江湖一言:
码不在多,掌握才行。