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使用PyGreSQL操作PostgreSQL数据库教程
Jul 30 Python
Python的Twisted框架上手前所必须了解的异步编程思想
May 25 Python
详解Python中的array数组模块相关使用
Jul 05 Python
python实现的正则表达式功能入门教程【经典】
Jun 05 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 Python
通过实例解析python描述符原理作用
Jan 22 Python
python 连续不等式语法糖实例
Apr 15 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 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
Content-type 的说明
2006/10/09 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
JQuery在光标位置插入内容的实现代码
2010/06/18 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
Json实现传值到后台代码实例
2020/06/30 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
python保存文件方法小结
2018/07/27 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
意大利网上药房:Farmacia 33
2020/01/27 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
促销活动策划方案
2014/01/12 职场文书
人事部经理岗位职责
2014/03/07 职场文书
1亿有多大教学反思
2014/05/01 职场文书
世博会口号
2014/06/20 职场文书
防汛工作情况汇报
2014/10/28 职场文书
雷峰塔导游词
2015/02/09 职场文书
违纪开除通知书
2015/04/25 职场文书
法制主题班会教案
2015/08/13 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
岗位聘任协议书
2015/09/21 职场文书
自考生自我评价
2019/06/21 职场文书