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中的包和模块实例
Nov 22 Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
Python高级编程之继承问题详解(super与mro)
Nov 19 Python
Python类的动态绑定实现原理
Mar 21 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
Python新手如何理解循环加载模块
May 29 Python
python 实用工具状态机transitions
Nov 21 Python
浅谈matplotlib默认字体设置探索
Feb 03 Python
pandas中对文本类型数据的处理小结
Nov 01 Python
python数据分析之单因素分析线性拟合及地理编码
Jun 25 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
PHP也可以?成Shell Script
2006/10/09 PHP
将PHP作为Shell脚本语言使用
2006/10/09 PHP
PHP 错误之引号中使用变量
2009/05/04 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
DOM下的节点属性和操作小结
2009/05/14 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
js正则匹配多个全部数据问题
2019/12/20 Javascript
js实现无缝轮播图
2020/03/09 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
python散点图实例之随机漫步
2018/08/27 Python
python爬取淘宝商品销量信息
2018/11/16 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
使用python模拟高斯分布例子
2019/12/09 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
python cookie反爬处理的实现
2020/11/01 Python
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
机电一体化毕业生求职信
2013/11/02 职场文书
自我评价范文
2013/12/22 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
长辈证婚人证婚词
2014/01/09 职场文书
七一党日活动总结
2014/07/08 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
swagger如何返回map字段注释
2021/07/03 Java/Android