桶排序+睡眠排序python

桶排序的含义就是讲数字按大小分入桶中然后按序取出。

解释可以如下:

假如有数组arr=[1,2,3,10,20,6,70,9]

内有八个数 我们可以分配4个桶也可以分配8个桶,数字较少时我们可以分配数目较多的桶,数字较多的时候分配较少的桶,减少对空间的消耗。

在这里插入图片描述

桶的范围是根据最大最小值来确立的即我们需要首先遍历一遍。

def bucketSort(arr,bucketnumber):
    #在此不考虑只有1个数或没有数字的情况
    maxnum=arr[0]
    minnum=arr[0]
    for i in range(1,len(arr)):
        if minnum>arr[i]:
            minnum=arr[i]
        elif maxnum<arr[i]:
            maxnum=arr[i]
        else:
            continue
    bucketrange=(maxnum-minnum+1)//bucketnumber#求出桶数(取整数 不会四舍五入)
    buckets=[[]for i in range(bucketnumber)]#定义桶数的空间代码效果为:[[], [], [], [], []]
    for i in range(len(arr)):     # 将各个数分配到各个桶
        buckets[(arr[i] - minnum) // bucketrange].append(arr[i])#append就是插入数组中,桶的编号是012
    for i in range(bucketnumber):       # 桶内排序,可以使用各种排序方法
        buckets[i].sort()       #sort是自带的升序排序
    result=[]#定义一个结果数组来存储结果
    for i in range(len(buckets)):
        for j in range(len(buckets[i])):
            result.append(buckets[i][j])
    return result
numlist = [11,34,23,56,8,20,66,45,54,87,78]
print(bucketSort(numlist,5))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值