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代码使其加快作用域内的查找
Mar 30 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
django 发送手机验证码的示例代码
Apr 25 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
Python 静态方法和类方法实例分析
Nov 21 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Python爬虫:Request Payload和Form Data的简单区别说明
Apr 30 Python
django中嵌套的try-except实例
May 21 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
Jun 29 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
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
在Django框架中编写Context处理器的方法
2015/07/20 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
WxPython建立批量录入框窗口
2019/02/27 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
使用Python封装excel操作指南
2021/01/29 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
基本款天堂:Everlane
2017/05/13 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
求职者怎样写自荐信
2014/04/13 职场文书
法制宣传月活动总结
2014/04/29 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android
TypeScript 内置高级类型编程示例
2022/09/23 Javascript