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

# 桶排序

作者头像
用户1175783
发布2019-09-10 14:39:15
2820
发布2019-09-10 14:39:15
举报
文章被收录于专栏:用户1175783的专栏

# 桶排序

# 原理

代码语言:javascript
复制
求出无序集合的最大值与最小值(这里的最小值指存在负数的情况),创建对应的数组长度
    length=max+1
    这里要处理一下负数
    if min<0: 
        length+=abs(min)
该length就是桶数组的长度,并创建这个桶数组将所有值初始化为0
然后遍历无须数组,修改桶中元素的个数(桶数组所以对应的值就是无需数组中相同值的个数)
最后只需要将桶数组中值大于0的取出来放在一个新数组中即得有序数组。

# 实现

代码语言:javascript
复制
inputArr = [ 11,10,199383, 34, -1,-32,-29, 4, 0, 34, 5, 4, 36, 1, 8, 123, 453, 1008]
print("未排序集合:{0}".format(inputArr))
maxItem=inputArr[0]
minItem=inputArr[0]
for item in inputArr[1:]:
    if maxItem<item:
        maxItem=item
    if(minItem>item):
        minItem=item
# 最小值,最大值
print("min:{0}\tmax:{1}".format(minItem,maxItem))

# 创建桶数组,索引值为元素值,索引对应的值为元素个数
length=maxItem+1
if(minItem<0):
    length+=abs(minItem)
bigArr=[0]*length
for item in inputArr:
    bigArr[item]+=1

# 将桶中的数据放到对应的有序数组上
sortArr=[None]*len(inputArr)
sortIndex=0
for index in range(minItem,maxItem+1):
    if(bigArr[index]==0):
        continue
    while(bigArr[index]>0):
        sortArr[sortIndex]=index
        bigArr[index]-=1
        sortIndex+=1
        
print("已排序集合:{0}".format(sortArr))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 桶排序
    • # 原理
      • # 实现
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档