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
相关推荐
执子手 吹散苍茫茫烟波7 分钟前
leetcode46.全排列
java·leetcode·链表·深度优先·回溯法
Swift社区8 分钟前
Swift 解法详解:LeetCode 368《最大整除子集》
开发语言·leetcode·swift
力扣每日一题16 分钟前
【LeetCode】19、删除链表的倒数第N个结点
算法·leetcode·链表
悦悦子a啊31 分钟前
[Java]PTA:jmu-java-01入门-基本输入
java·开发语言·算法
CoovallyAIHub1 小时前
Transformer实时检测首次全面超越YOLO:百度LW-DETR轻量高效,精度速度双突破
深度学习·算法·计算机视觉
闲人编程1 小时前
雪花算法实现分布式环境下的高效动态ID生成
分布式·python·算法·wpf·标识符·雪花·分布式动态id
NAGNIP1 小时前
大模型工程框架生态全览
算法
@卞2 小时前
中心扩展算法
算法
Tim_102 小时前
【算法专题训练】17、双向链表
数据结构·c++·算法·链表
ZCollapsar.2 小时前
数据结构 04(线性:双向链表)
c语言·数据结构·学习·算法·链表