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数据结构之双向链表的定义与使用方法示例
Jan 16 Python
VSCode下好用的Python插件及配置
Apr 06 Python
用pandas按列合并两个文件的实例
Apr 12 Python
对numpy Array [: ,] 的取值方法详解
Jul 02 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
Python 调用有道翻译接口实现翻译
Mar 02 Python
opencv 查找连通区域 最大面积实例
Jun 04 Python
python模块如何查看
Jun 16 Python
python利用 keyboard 库记录键盘事件
Oct 16 Python
python3实现无权最短路径的方法
May 12 Python
Django实现翻页的示例代码
May 24 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生成器简单实例
2015/05/13 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
<script defer> defer 是什么意思
2009/05/10 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
python能开发游戏吗
2020/06/11 Python
Python修改DBF文件指定列
2020/12/19 Python
手术室护士自我鉴定
2013/10/14 职场文书
24岁生日感言
2014/01/13 职场文书
总经理岗位职责范本
2014/02/02 职场文书
期末自我鉴定
2014/02/02 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
关于教师节的广播稿
2014/09/10 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
作息时间调整通知
2015/04/22 职场文书
走进毛泽东观后感
2015/06/04 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android