【桶排序~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)


上一章链接:二叉树的前序、中序、后序及层次遍历


江湖一言:

码不在多,掌握才行。

持续更新中…

猜你喜欢

转载自blog.csdn.net/m0_66318554/article/details/124758210