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小技巧之批量抓取美女图片
Jun 06 Python
python操作mysql中文显示乱码的解决方法
Oct 11 Python
Python pickle模块用法实例
Apr 14 Python
Python探索之自定义实现线程池
Oct 27 Python
Python 中导入csv数据的三种方法
Nov 01 Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
python实现文件的分割与合并
Aug 29 Python
python解析多层json操作示例
Dec 30 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
python反编译教程之2048小游戏实例
Mar 03 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 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
mysql 性能的检查和优化方法
2009/06/21 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
在JavaScript中构建ArrayList示例代码
2014/09/17 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
Python之list对应元素求和的方法
2018/06/28 Python
分享vim python缩进等一些配置
2018/07/02 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
校园歌咏比赛主持词
2014/03/18 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
教师理论学习心得体会
2016/01/21 职场文书