python实现【桶排序】(Bucket Sort)

简介: python实现【桶排序】(Bucket Sort)

python实现【桶排序】(Bucket Sort)


算法原理及介绍


桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。

桶排序 (Bucket sort)的工作原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。


算法过程描述


  1. 设置一个定量的数组当作空桶;


  1. 遍历输入数据,并且把数据一个一个放到对应的桶里去;


  1. 对每个不是空的桶进行排序;


  1. 从不是空的桶里把排好序的数据拼接起来。


算法排序图解如下


下图分为10个桶,每一个桶的范围为【iX10, (i+1)X10】,将每一个数放入指定桶的范围内。


20201201152312618.png


python实现代码


def bucketSort(nums):
    # 选择一个最大的数
    max_num = max(nums)
    # 创建一个元素全是0的列表, 当做桶
    bucket = [0] * (max_num + 1)
    # 把所有元素放入桶中, 即把对应元素个数加一
    for i in nums:
        bucket[i] += 1
    # 存储排序好的元素
    sort_nums = []
    # 取出桶中的元素
    for j in range(len(bucket)):
        if bucket[j] != 0:
            for y in range(bucket[j]):
                sort_nums.append(j)
    return sort_nums



相关文章
|
6月前
|
Python
python sort和sorted的区别
在Python中,sort()和sorted()都是用于排序的函数,但它们之间存在一些关键的区别,这些区别主要体现在它们的应用方式、操作对象以及对原始数据的影响上。
|
2月前
|
Python
Python sorted() 函数和sort()函数对比分析
Python sorted() 函数和sort()函数对比分析
|
5月前
|
自然语言处理 Python
python技巧:数组排序sort,all方法
python技巧:数组排序sort,all方法
|
6月前
|
算法 Python
Python中不使用sort对列表排序的技术
Python中不使用sort对列表排序的技术
75 1
|
6月前
|
Python
Python中sort和sorted函数用法解析
Python中sort和sorted函数用法解析
68 0
|
Python
Python实现因子分析(附案例实战)
Python实现因子分析(附案例实战)
1631 0
Python实现因子分析(附案例实战)
|
6月前
|
存储 对象存储 Python
使用Python脚本快速批量删除OSS Bucket
要用Python删除OSS Bucket,似乎直接调用delete_bucket()方法就可以了。然而,在实际删除时,常常会遇到各种报错。这是因为OSS为了防止误操作,要求在删除Bucket之前必须清空其中的所有数据,包括对象(Objects)、多版本对象(Multi-version Objects)、碎片(Parts)、LiveChannels。针对需要快速批量删除OSS Bucket的场景,本文提供了一个Python脚本,用于先批量清除Bucket中的上述资源,然后再删除Bucket。
332 0
Python print() 打印两个 list ,实现中间换行
Python print() 打印两个 list ,实现中间换行
|
Python
python之sort,reverse的定义和使用,列表元素最大最小值的求解,列表嵌套的基本使用。
python之sort,reverse的定义和使用,列表元素最大最小值的求解,列表嵌套的基本使用。
|
算法 大数据 Python
Leedcode 每日一练 搜索二维矩阵Ⅰ Python实现
Leedcode 每日一练 搜索二维矩阵Ⅰ Python实现
155 2
Leedcode 每日一练 搜索二维矩阵Ⅰ Python实现