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

解释可以如下:

假如有数组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:continuebucketrange=(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就是插入数组中,桶的编号是012for 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))

桶排序+睡眠排序python相关推荐

  1. Java多线程排序--睡眠排序

    Java多线程排序–睡眠排序 import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public ...

  2. java多线程并发排序-睡眠排序大法

    java多线程并发编程之创新排序法-睡眠排序大法,多线程并发排序使得排序效率更高 public class sleepSort {public static void main(String[] ar ...

  3. 【代码】睡眠排序python实现

    在逛知乎时,碰巧发现这样一个问题除了经典和常用的排序算法外,还有哪些奇葩而有趣的排序算法?,里面出现了一个名叫睡眠排序的算法,真的是脑洞大开,特此来实现一下. 一点历史,原帖是2014年Reddit上 ...

  4. 八大排序算法的 Python 实现

    八大排序算法的 Python 实现 本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入 ...

  5. python知识:几个排序算法的python实现

    将数据结构的10个排序用python实现,以便快速查找或学习. 1 冒泡排序 ###冒泡排序 def bubbleSort(arr):length = len(arr)for i in range(l ...

  6. 【Kick Algorithm】十大排序算法及其Python实现

    文章来源于NewBeeNLP,作者kaiyuan 写在前面 看到好像春招都已经陆续都开始了,最近抽空打算把自己和朋友的经验整理一下分享出来.作为一个刚刚经历秋招打击的自闭儿童,可以非常负责任地说手撕算 ...

  7. 归并排序验证性实验_攻略 | 10 大经典排序算法(Python 版)

    全国信息学大神和家长在这里 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能 ...

  8. python选择排序从大到小_经典排序算法和Python详解之(一)选择排序和二元选择排序...

    本文源自微信公众号[Python编程和深度学习]原文链接:经典排序算法和Python详解之(一)选择排序和二元选择排序,欢迎扫码关注鸭! 扫它!扫它!扫它 排序算法是<数据结构与算法>中最 ...

  9. python基础===八大排序算法的 Python 实现

    本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一 ...

最新文章

  1. 【号外号外:微软收购 .NET 的开源实现 Xamarin 项目的公司】
  2. 前端构建工具gulp之基本介绍
  3. 消息中间件--RabbitMQ --- 消费端限流 -- 非常重要
  4. (文中有惊喜)走进云时代的数据库
  5. read.table与readr::read_delim
  6. XP命令合集(开始→运行→输入的命令集锦开始→运行→输入的命令集锦)
  7. centos网卡错误Device eth0 does not seem to be present
  8. Python 网络爬虫第二讲
  9. 利用企业微信机器人发送GitLab消息
  10. 阿里云对象存储OSS有什么功能?
  11. Exchange邮箱爆破和信息收集
  12. 2021年高考高密一中成绩查询,速递|2021年高密市高中阶段学校招生录取政策发布...
  13. 解决vue+element 时间控件时间差,区域时差8小时
  14. grabcut图像分割的原理简单介绍
  15. 【架构设计】什么是CAP理论?
  16. Kali Linux 与 BackTrack Linux
  17. 前端知识总结之基础知识
  18. ROS IOError: [Errno 13] Permission denied 报错
  19. 94%的市场待开发,这份调研报告直指企业“软肋”!
  20. QT (C++)安装5.14

热门文章

  1. 如何屏蔽网页弹窗和广告网站
  2. 前端 vue 二维码解析工具
  3. PreScanCarSim联合仿真实现车道保持
  4. linux ladp 原理,轻松了解LDAP的结构概念
  5. 浏览器支持什么字体?
  6. 在VNC下远程安装Linux系统
  7. PLC(可编程逻辑控制器)——WPLSoft的基本操作
  8. 饮水机电路-工作剖析
  9. 电磁场理论笔记01:场论
  10. 直线泵(Linear pump) 原理介绍