leetcode桶排序

桶排序(bucket sort)是分治策略的一个典型应用。它通过设置一些具有大小顺序的桶,每个桶对应一个数据范围,将数据平均分配到各个桶中;然后,在每个桶内部分别执行排序;最终按照桶的顺序将所有数据合并。

python 复制代码
def bucket_sort(nums: list[float]):
    """桶排序"""
    # 初始化 k = n/2 个桶,预期向每个桶分配 2 个元素
    k = len(nums) // 2
    buckets = [[] for _ in range(k)]
    # 1. 将数组元素分配到各个桶中
    for num in nums:
        # 输入数据范围为 [0, 1),使用 num * k 映射到索引范围 [0, k-1]
        i = int(num * k)
        # 将 num 添加进桶 i
        buckets[i].append(num)
    # 2. 对各个桶执行排序
    for bucket in buckets:
        # 使用内置排序函数,也可以替换成其他排序算法
        bucket.sort()
    # 3. 遍历桶合并结果
    i = 0
    for bucket in buckets:
        for num in bucket:
            nums[i] = num
            i += 1
相关推荐
老洋葱Mr_Onion2 分钟前
【C++】高精度模板
开发语言·c++·算法
脚踏实地皮皮晨28 分钟前
003003002_WPF Grid 基类官方类定义逐行深度解析
开发语言·windows·算法·c#·wpf·visual studio
aaaameliaaa9 小时前
字符函数和字符串函数
c语言·笔记·算法
城管不管10 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
月疯10 小时前
二分法算法(水平等分图形面积)
算法
豆瓣鸡10 小时前
算法日记 - Day3
java·开发语言·算法
白白白小纯10 小时前
算法篇—反转链表
c语言·数据结构·算法·leetcode
Achou.Wang11 小时前
深入理解go语言-第5章 并发编程——Go的灵魂
大数据·算法·golang
The Chosen One98511 小时前
高进度算法模板速记(待完善)
java·前端·算法
圣保罗的大教堂13 小时前
leetcode 3517. 最小回文排列 I 中等
leetcode