前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用python实现“桶排序”

用python实现“桶排序”

作者头像
小草AI
发布2019-07-31 15:53:11
1.2K0
发布2019-07-31 15:53:11
举报

原理:

将待排序的数据分到几个有序的桶里,每个桶的数据单独排序,桶内排完序后,再按顺序依次取出,组成有序序列。

步骤:

  1. 找出序列中的最大和最小值,目的是为了确定所需桶的数量;
  2. 将数据放入相应的桶;
  3. 桶内数据进行排序,可以按照快排等算法进行排序;
  4. 桶内数据有序取出并合并成完整的有序序列。

实现代码(python):

from quick_sort import quick_sort    #从快排引入快排包

def bucket_sort(alist, bucketsize):
    minValue = alist[0]
    maxValue = alist[1]
    
    for i in alist:
        if i < minValue:
            minValue = i
        elif i > maxValue:
            maxValue = i
    #桶数量
    bucketcount = (maxValue - minValue +1) // bucketsize
    #对应的桶
    bucket_lists = list([] for _ in range(bucketcount))
    
    #把数据放入相应的桶
    for i in alist:
        bucket_index = (i - minValue) // bucketsize
        bucket_lists[bucket_index].append(i)
     
    
    #桶内快排
    for j in bucket_lists:
        quick_sort(j, 0, len(j)-1)     #这里采用的是快排,需要引入快排的包,因为篇幅原因,这里不放快排的代码
    
    #合并数据
    result = []
    for j in bucket_lists:
        if len(j) != 0:
            result.extend(j)
    return result

复杂度分析: -空间复杂度 空间复杂度为O(n)

-时间复杂度 –最优时间复杂度:O(n) –最坏时间复杂度:O(nlogn) –平均时间复杂度:O(n)

是否属于原地排序算法: 不是一种原地排序算法

稳定性: 稳定

适应范围: 适应外部排序,即数据量比较大,但是数据范围比较小的排序

猜您喜欢

往期精选▼

1. 用Python来点高逼格的,用 python 拟合等角螺线

2.空洞卷积(dilated convolution)深入详解——优点与缺点

3. CNN中的目标多尺度处理策略汇总

4. pythonturtle绘图 绘制奥运五环 绘制18*18棋盘

5. 使用python+tkinter开发一个简单的学生管理系统

有趣的灵魂终究会相遇

好看的皮囊风干在路上

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与python集中营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档