Python实现的桶排序算法示例

 更新时间:2017年11月29日 10:17:24   作者:qlshine  
这篇文章主要介绍了Python实现的桶排序算法,简单说明了桶排序的概念、原理及优缺点,并结合实例形式演示了Python实现桶排序的方法,需要的朋友可以参考下

本文实例讲述了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]
"""

运行结果:

总体来说,桶排序的优点就是特别快,真的是特别快!特别快!特别块!而缺点就是特别耗资源,如果数据取值的范围是0---1010, 就要申请一个大小为1010的数组,想想这得多耗内存空间。阔怕!且桶排序只能排序大于零的整数。

PS:关于排序算法的详细说明还可参考本站在线工具:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具
http://tools.jb51.net/aideddesign/paixu_ys

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • Python爬虫实例——scrapy框架爬取拉勾网招聘信息

    Python爬虫实例——scrapy框架爬取拉勾网招聘信息

    这篇文章主要介绍了Python爬虫实例——scrapy框架爬取拉勾网招聘信息的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Python 通过requests实现腾讯新闻抓取爬虫的方法

    Python 通过requests实现腾讯新闻抓取爬虫的方法

    今天小编就为大家分享一篇Python 通过requests实现腾讯新闻抓取爬虫的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python字符串格式化实例讲解

    Python字符串格式化实例讲解

    字符串是Pyhon中的常用的数据类型,这篇文章主要为大家详细介绍一下python字符串的格式化教程,文中示例代码讲解详细,需要的朋友可以参考下
    2022-10-10
  • python模块常用用法实例详解

    python模块常用用法实例详解

    由于平时习惯,strftime比较常用,strptime和它是反操作。这篇文章主要介绍了python模块常用用法,需要的朋友可以参考下
    2019-10-10
  • Python中语音转文字相关库介绍(最新推荐)

    Python中语音转文字相关库介绍(最新推荐)

    Python的speech_recognition库是一个用于语音识别的Python包,它可以使Python程序能够识别和翻译来自麦克风、音频文件或网络流的语音,这篇文章主要介绍了Python中语音转文字相关库介绍,需要的朋友可以参考下
    2023-05-05
  • pycharm创建一个python包方法图解

    pycharm创建一个python包方法图解

    在本篇文章中小编给大家分享了关于pycharm怎么创建一个python包的相关知识点,需要的朋友们学习下。
    2019-04-04
  • Python中判断subprocess调起的shell命令是否结束

    Python中判断subprocess调起的shell命令是否结束

    这篇文章主要介绍了Python中判断subprocess调起的shell命令是否结束的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • asyncio异步编程之Task对象详解

    asyncio异步编程之Task对象详解

    这篇文章主要为大家详细介绍了asyncio异步编程之Task对象,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • PyGraphviz 安装使用及注意事项

    PyGraphviz 安装使用及注意事项

    PyGraphviz 是对 Graphviz 的封装,提供了 Python 接口的调用,这篇文章主要介绍了PyGraphviz 安装使用,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小

    matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小

    在撰写论文时常常会用到matplotlib来绘制三维散点图,下面这篇文章主要给大家介绍了关于matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08

最新评论