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中尾递归用法实例详解
Apr 28 Python
详解python单例模式与metaclass
Jan 15 Python
pyqt5的QComboBox 使用模板的具体方法
Sep 06 Python
Python多进程写入同一文件的方法
Jan 14 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 Python
解决Django Haystack全文检索为空的问题
May 19 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
python代数式括号有效性检验示例代码
Oct 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
php 浮点数比较方法详解
2017/05/05 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
php命令行模式代码实例详解
2021/02/26 PHP
在视频前插入广告
2006/11/20 Javascript
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
JS实现简易换图时钟功能分析
2018/01/04 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
施工安全标语
2014/06/07 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
武当山导游词
2015/02/03 职场文书
学前班教学反思
2016/02/24 职场文书
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers
Python实现聚类K-means算法详解
2022/07/15 Python