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写xml文件的操作实例
Oct 05 Python
简单介绍Python中的RSS处理
Apr 13 Python
Python中的Numeric包和Numarray包使用教程
Apr 13 Python
Python简单连接MongoDB数据库的方法
Mar 15 Python
Python的标准模块包json详解
Mar 13 Python
python处理xml文件的方法小结
May 02 Python
Python之web模板应用
Dec 26 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
PHP 开发环境配置(测试开发环境)
2010/04/28 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
php格式化电话号码的方法
2015/04/24 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
python 自动提交和抓取网页
2009/07/13 Python
python自动化测试之连接几组测试包实例
2014/09/28 Python
python使用arp欺骗伪造网关的方法
2015/04/24 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
Python把csv数据写入list和字典类型的变量脚本方法
2018/06/15 Python
用pycharm开发django项目示例代码
2018/10/24 Python
python实现弹跳小球
2019/05/13 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
Java里面如何创建一个内部类的实例
2015/01/19 面试题
破坏寝室公物检讨书
2014/11/17 职场文书
离婚被告答辩状
2015/05/22 职场文书
雷锋电影观后感
2015/06/10 职场文书
法律服务所工作总结
2015/08/10 职场文书
学习十八大的感悟
2015/08/11 职场文书
校园安全主题班会
2015/08/12 职场文书
国庆节主题班会
2015/08/15 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫