桶排序+睡眠排序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: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相关推荐
- Java多线程排序--睡眠排序
Java多线程排序–睡眠排序 import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public ...
- java多线程并发排序-睡眠排序大法
java多线程并发编程之创新排序法-睡眠排序大法,多线程并发排序使得排序效率更高 public class sleepSort {public static void main(String[] ar ...
- 【代码】睡眠排序python实现
在逛知乎时,碰巧发现这样一个问题除了经典和常用的排序算法外,还有哪些奇葩而有趣的排序算法?,里面出现了一个名叫睡眠排序的算法,真的是脑洞大开,特此来实现一下. 一点历史,原帖是2014年Reddit上 ...
- 八大排序算法的 Python 实现
八大排序算法的 Python 实现 本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入 ...
- python知识:几个排序算法的python实现
将数据结构的10个排序用python实现,以便快速查找或学习. 1 冒泡排序 ###冒泡排序 def bubbleSort(arr):length = len(arr)for i in range(l ...
- 【Kick Algorithm】十大排序算法及其Python实现
文章来源于NewBeeNLP,作者kaiyuan 写在前面 看到好像春招都已经陆续都开始了,最近抽空打算把自己和朋友的经验整理一下分享出来.作为一个刚刚经历秋招打击的自闭儿童,可以非常负责任地说手撕算 ...
- 归并排序验证性实验_攻略 | 10 大经典排序算法(Python 版)
全国信息学大神和家长在这里 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能 ...
- python选择排序从大到小_经典排序算法和Python详解之(一)选择排序和二元选择排序...
本文源自微信公众号[Python编程和深度学习]原文链接:经典排序算法和Python详解之(一)选择排序和二元选择排序,欢迎扫码关注鸭! 扫它!扫它!扫它 排序算法是<数据结构与算法>中最 ...
- python基础===八大排序算法的 Python 实现
本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一 ...
最新文章
- GPIO,I2C,SPI,UART,USART,USB的区别
- python不能加密吗_为什么我不能解密我用pycrypto加密的内容?
- man手册查找ascii码和运算符优先级
- 自主研发:3通道1GS/s FPGA+DSP板
- Codeforces Round #713 (Div. 3)
- Linux CentOS 6.x设置静态IP(亲测有效)
- [Python图像识别] 四十九.图像生成之什么是生成对抗网络GAN?基础原理和代码普及
- J2EE 第二阶段项目之编写代码(六)
- ctfmon是什么启动项_启动项里ctfmon是什么意思,干什么用的??
- 苹果官网下架 iPhone 8 全系;阿里推出“阿里云会议”;深度操作系统 20 BETA 发布 | 极客头条...
- Trick (八)——list 模拟 stack(Python)
- 好的技术不一定能给你带来财富,但是好的工具一定可以让你创造财富
- 耳挂式蓝牙耳机原理_专为运动而生的DOSS T63无线蓝牙耳挂式运动耳机
- BXP无盘技术应用于网吧的一些经验(转)
- linux装流量宝,流量宝下载_流量宝官方APP手机最新版本下载安装 - 风云下载
- kodi remote android,使用Android和iOS在Win10系统中设置Kodi Remote方法
- Oracle 语法中的 INSERT INTO
- 利用MATLAB进行人脸识别
- HDFS PB级数据无感迁移实践
- 广工计算机研究生 毕业去向,2021高校分析:广东工业大学毕业生就业主要去向是珠三角...
热门文章
- Atitit 支出分类表 会计科目(1)资产(2)负债(3)资本(4)收益(5)费用(成本) 资产分类表 attilax总结...
- Mac上虚拟机软件哪个好?Mac上最好用的虚拟机软件是哪个?
- 文献阅读—An exploratory study of congestion control techniques in Wireless Sensor Networks
- codevs2830 蓬莱山辉夜
- java快速开发平台(框架)
- 21开运网的每日通胜 出行参考
- 五种全面质量管理工具
- 天气预报开发之小程序篇
- 建行用区块链技术帮农民工讨薪 未来三年将服务1亿农民工
- SQL85 实习广场投递简历分析(二)