Python实现的桶排序算法示例


Posted in Python onNovember 29, 2017

本文实例讲述了Python实现的桶排序算法。分享给大家供大家参考,具体如下:

桶排序也叫计数排序,简单来说,就是将数据集里面所有元素按顺序列举出来,然后统计元素出现的次数。最后按顺序输出数据集里面的元素。

但是桶排序非常浪费空间, 比如需要排序的范围在0~2000之间, 需要排序的数是[3,9,4,2000], 同样需要2001个空间

注意: 桶排序不能排序小数

以下为从小到大代码实现

#!/usr/bin/env python
# coding:utf-8
def bucketSort(nums):
  # 选择一个最大的数
  max_num = max(nums)
  # 创建一个元素全是0的列表, 当做桶
  bucket = [0]*(max_num+1)
  # 把所有元素放入桶中, 即把对应元素个数加一
  for i in nums:
    bucket[i] += 1
  # 存储排序好的元素
  sort_nums = []
  # 取出桶中的元素
  for j in range(len(bucket)):
    if bucket[j] != 0:
      for y in range(bucket[j]):
        sort_nums.append(j)
  return sort_nums
nums = [5,6,3,2,1,65,2,0,8,0]
print "三水点靠木测试结果:"
print bucketSort(nums)
"""
[0, 0, 1, 2, 2, 3, 5, 6, 8, 65]
"""

运行结果:

Python实现的桶排序算法示例

总体来说,桶排序的优点就是特别快,真的是特别快!特别快!特别块!而缺点就是特别耗资源,如果数据取值的范围是0---1010, 就要申请一个大小为1010的数组,想想这得多耗内存空间。阔怕!且桶排序只能排序大于零的整数。

PS:关于排序算法的详细说明还可参考本站在线工具:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具
http://tools.3water.com/aideddesign/paixu_ys

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python的else子句使用指南
Feb 27 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
Nov 06 Python
Python实现图片转字符画的代码实例
Feb 22 Python
Python3 pandas 操作列表实例详解
Sep 23 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
基于python实现获取网页图片过程解析
May 11 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
python rsa-oaep加密的示例代码
Sep 23 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 #Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 #Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 #Python
JSONLINT:python的json数据验证库实例解析
Nov 28 #Python
详解如何使用Python编写vim插件
Nov 28 #Python
从头学Python之编写可执行的.py文件
Nov 28 #Python
浅谈用Python实现一个大数据搜索引擎
Nov 28 #Python
You might like
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
PHP实现简易用户登录系统
2020/07/10 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python动态加载变量示例分享
2014/02/17 Python
python实现在pickling的时候压缩的方法
2014/09/25 Python
Django卸载之后重新安装的方法
2017/03/15 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
Pytorch的mean和std调查实例
2020/01/02 Python
python怎么自定义捕获错误
2020/06/29 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
python3将变量输入的简单实例
2020/08/19 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
酒店门卫岗位职责
2013/12/29 职场文书
CAD制图设计师自荐信
2014/01/29 职场文书
幼儿园教师奖惩制度
2014/02/01 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
低碳环保标语
2014/06/12 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
全陪导游词
2015/02/04 职场文书
新郎结婚感言
2015/07/31 职场文书
golang使用map实现去除重复数组
2022/04/14 Golang