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脚本简单实现打开默认浏览器登录人人和打开QQ的方法
Apr 12 Python
python2 与python3的print区别小结
Jan 16 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
Python自动抢红包教程详解
Jun 11 Python
python自动化之Ansible的安装教程
Jun 13 Python
Python 根据日志级别打印不同颜色的日志的方法示例
Aug 08 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
使用PyCharm进行远程开发和调试的实现
Nov 04 Python
在PyCharm中实现添加快捷模块
Feb 12 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 zend解密软件绿色版测试可用
2008/04/14 PHP
利用PHP实现短域名互转
2013/07/05 PHP
php中Ctype函数用法详解
2014/12/09 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
载入进度条 效果
2006/07/08 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
Python的迭代器和生成器使用实例
2015/01/14 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
对pandas中apply函数的用法详解
2018/04/10 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
Pytorch的mean和std调查实例
2020/01/02 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
python实现数字炸弹游戏程序
2020/07/17 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
银行员工考核评语
2014/12/31 职场文书
考试作弊检讨
2015/01/27 职场文书
年度考核个人总结
2015/03/06 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书