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库urllib与urllib2主要区别分析
Jul 13 Python
PyMongo安装使用笔记
Apr 27 Python
Python中使用items()方法返回字典元素对的教程
May 21 Python
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
Python 文件处理注意事项总结
Apr 10 Python
Python使用openpyxl读写excel文件的方法
Jun 30 Python
python查询mysql,返回json的实例
Mar 26 Python
python分治法求二维数组局部峰值方法
Apr 03 Python
python匿名函数用法实例分析
Aug 03 Python
Python正则表达式高级使用方法汇总
Jun 18 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
Jul 03 Python
Python生成器generator原理及用法解析
Jul 20 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
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
prototype 1.5 & scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
jQuery内容筛选选择器实例代码
2017/02/06 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python基于分水岭算法解决走迷宫游戏示例
2017/09/26 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
对Python生成器、装饰器、递归的使用详解
2019/07/19 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
Python之Sklearn使用入门教程
2021/02/19 Python
Vrbo英国:预订度假屋
2020/08/19 全球购物
Java程序开发中如何应用线程
2016/03/03 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
励志演讲稿300字
2014/08/21 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
2014年女职工工作总结
2014/11/27 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
员工开除通知书
2015/04/25 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
特种设备安全管理制度
2015/08/06 职场文书