当前位置: 首页 > article >正文

leetcode桶排序

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

在这里插入图片描述

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

在这里插入图片描述


http://www.kler.cn/a/349898.html

相关文章:

  • (10) GTest c++单元测试(mac版)
  • Python cachetools常用缓存算法汇总
  • Python的dataframe 排序
  • MySQL 【日期】函数大全(四)
  • ollama + fastgpt+m3e本地部署
  • AI视频监控卫士:免费开源,一键安装轻松实现智能监控
  • Unity客户端HR面面经
  • 人工智能学习框架
  • Springboot 接入 WebSocket 实战
  • AMBA:AHB的历史(从AHB2到AHB5)
  • 0基础能不能转行做网络安全?
  • linux信号 | 学习信号四步走 | 全解析信号的产生方式
  • Flume面试整理-常见的Sink类型
  • 中小型医院网站:Spring Boot开发策略
  • 安装TDengine数据库3.3版本和TDengine数据库可视化管理工具
  • 杂记9---C++工程目录一键生成脚本分享
  • 2015年-2016年 软件工程程序设计题(算法题)实战_c语言程序设计数据结构程序设计分析
  • Spring Security自定义登录接口处理JSON请求体
  • 开源OpenStack
  • 施磊C++ | 进阶学习笔记 | 5.设计模式