桶排序

排序 · 浏览次数 : 3

小编点评

**博客链接:**https://www.cnblogs.com/zylyehuo/# -*- coding: utf-8 -*- **代码:** ```python def bucket_sort(li, n=100, max_num=10000): buckets = [[] for _ in range(n)] for var in li: i = min(var // (max_num // n), n-1) buckets[i].append(var) for j in range(len(buckets[i])-1, 0, -1): if buckets[i][j] < buckets[i][j-1]: buckets[i][j], buckets[i][j-1] = buckets[i][j-1], buckets[i][j] sorted_li = [] for buc in buckets: sorted_li.extend(buc) return sorted_li ``` **概述:** 该代码使用桶排序算法对列表 `li` 进行排序。 **步骤:** 1. **创建桶:**创建一个包含空列表的列表 `buckets`,`buckets` 中每个元素代表一个桶,容量为 `n`。 2. **分配桶号:**遍历 `li` 并计算每个元素将放在哪个桶中,并将其添加到对应桶中。 3. **合并桶:**遍历桶,并将桶内元素按大小排序。 4. **返回排序的列表:**返回最终排序后的列表。 **示例:** ```python li = [5, 2, 8, 3, 1, 9, 4] sorted_li = bucket_sort(li) print(sorted_li) ``` **输出:** ``` [1, 2, 3, 4, 5, 8] ``` **总结:** 该代码展示了一种快速且易于理解的桶排序算法。通过将元素分配到不同的桶中,该算法可以以线性时间对列表进行排序。

正文

博客地址:https://www.cnblogs.com/zylyehuo/

# -*- coding: utf-8 -*-

import random


def bucket_sort(li, n=100, max_num=10000):
    buckets = [[] for _ in range(n)] # 创建桶
    for var in li:
        i = min(var // (max_num // n), n-1) # i 表示var放到几号桶里
        buckets[i].append(var) # 把var加到桶里边
        # 保持桶内的顺序
        for j in range(len(buckets[i])-1, 0, -1):
            if buckets[i][j] < buckets[i][j-1]:
                buckets[i][j], buckets[i][j-1] = buckets[i][j-1], buckets[i][j]
            else:
                break
    sorted_li = []
    for buc in buckets:
        sorted_li.extend(buc)
    return sorted_li


li = [random.randint(0,10) for i in range(100)]
print(li)

li = bucket_sort(li)
print(li)

与桶排序相似的内容:

桶排序

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- import random def bucket_sort(li, n=100, max_num=10000): buckets = [[] for _ in range(n

常见排序算法(汇总)

博客地址:https://www.cnblogs.com/zylyehuo/ 希尔排序:时间复杂度与选取的gap序列有关 计数排序: 时间复杂度:O(n) 桶排序: 时间复杂度:O(n+k) 最坏时间复杂度:O(n²k) 空间复杂度:O(nk) 基数排序: 时间复杂度:O(kn) 空间复杂度:O(k

基于桶的排序之计数排序

# 基于桶的排序之计数排序 作者:[Grey](https://www.cnblogs.com/greyzeng/) 原文地址: [博客园:基于桶的排序之计数排序](https://www.cnblogs.com/greyzeng/p/16928076.html) [CSDN:基于桶的排序之计数排序

基于桶的排序之基数排序以及排序方法总结

# 基于桶的排序之基数排序以及排序方法总结 作者:[Grey](https://www.cnblogs.com/greyzeng/) 原文地址: [博客园:基于桶的排序之基数排序以及排序方法总结](https://www.cnblogs.com/greyzeng/p/16929142.html) [

Springboot+Guava实现单机令牌桶限流

# 令牌桶算法 > 系统会维护一个令牌(token)桶,以一个恒定的速度往桶里放入令牌(token),这时如果有请求进来想要被处理,则需要先从桶里获取一个令牌(token),当桶里没有令牌(token)可取时,则该请求将被拒绝服务。令牌桶算法通过控制桶的容量、发放令牌的速率,来达到对请求的限制。 >

限流器设计思路(浅入门)

目录令牌桶算法(Token Bucket)漏桶算法(Leaky Bucket)滑动窗口(Sliding Window)总结 限流器(Rate Limiter)是一种用于控制系统资源利用率和质量的重要机制。它通过限制单位时间内可以执行的操作数量,从而防止系统过载和保护服务的可靠性。在Java中,可以使

CF1836

# A.Destroyer 开个桶记录个数,看满不满足单调不上升即可。 # B.Astrophysicists > 辛辛苦苦写了这么久的文章就没了????烦死了。 > 自己做 Virtual Contest 的时候这道题打表打了半天(~~20min~~)才搞定…… ## 题目大意 有 $n$ 个人,

[转帖]s3fs - 使用S3FS存储桶目录允许其他用户使用权限

https://www.coder.work/article/6661505 我在使用S3FS时遇到问题。我正在使用 ubuntu@ip-x-x-x-x:~$ /usr/bin/s3fs --version Amazon Simple Storage Service File System 1.71

刷爆 LeetCode 周赛 337,位掩码/回溯/同余/分桶/动态规划·打家劫舍/贪心

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末是 LeetCode 第 337 场周赛,你参加了吗?这场周赛第三题有点放水,如果按照题目的数据量来说最多算 Easy 题,但如果按照动态规划来做可以算 Hard 题。 小彭的技术交

[转帖]编译安装goofys挂载Scaleway免费75G对象存储

日常•2022年5月29日 goofys编译 goofys是一个开源的使用Go编写的s3存储桶挂载工具,主打高性能。由于使用Go编写,没有用到什么特别的依赖,自己编译也很容易。截止2022.5.27,官方github仓库貌似一直有提交,但是提供的预编译安装包貌似只到2020年4月,而且只有x86版本