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 yield 小结和实例
Apr 25 Python
Python实现Const详解
Jan 27 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
kafka-python批量发送数据的实例
Dec 27 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
Pytorch之Variable的用法
Dec 31 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
django-csrf使用和禁用方式
Mar 13 Python
Django视图、传参和forms验证操作
Jul 15 Python
Python常用模块函数代码汇总解析
Aug 31 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 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
Yii框架登录流程分析
2014/12/03 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
javascript类型转换示例
2014/04/29 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
URL中“#” “?” &“”号的作用浅析
2017/02/04 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
ajaxfileupload.js实现上传文件功能
2019/04/19 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
Python同步遍历多个列表的示例
2019/02/19 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
详解python中index()、find()方法
2019/08/29 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
机电专业体育教师求职信
2013/09/21 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
销售口号大全
2014/06/11 职场文书
献爱心标语
2014/06/21 职场文书
出差报告格式模板
2014/11/06 职场文书
会计专业自荐信范文
2019/05/22 职场文书