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程序设计有所帮助。

相关文章

  • 如何利用AJAX获取Django后端数据详解

    如何利用AJAX获取Django后端数据详解

    ajax一个前后台配合的技术,它可以让javascript发送http请求,与后台通信,获取数据和信息。下面这篇文章主要介绍了如何利用AJAX获取Django后端数据的相关资料,需要的朋友可以参考下
    2021-06-06
  • Python执行程序获取所在目录的解决方案

    Python执行程序获取所在目录的解决方案

    工作需要,写一个小脚本,其中有个需求是获取实际的执行程序所在路径(python代码由pyinstaller打包成执行程序),这篇文章主要介绍了Python执行程序获取所在目录的解决方案,需要的朋友可以参考下
    2024-05-05
  • Python基于域相关实现图像增强的方法教程

    Python基于域相关实现图像增强的方法教程

    当在图像上训练深度神经网络模型时,通过对由数据增强生成的更多图像进行训练,可以使模型更好地泛化。本文将为大家介绍Python基于域相关的图像增强实现方法,需要的可以了解一下
    2022-01-01
  • TensorFlow安装CPU版本和GPU版本的实现步骤

    TensorFlow安装CPU版本和GPU版本的实现步骤

    本文主要介绍了TensorFlow安装CPU版本和GPU版本的实现步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • Python文件的操作示例的详细讲解

    Python文件的操作示例的详细讲解

    本问重点讲解了Python文件的读写原理、常用文件打开模式、文件对象的常用方法和目录的相关操作详细讲解,对Python文件操作相关知识感兴趣的朋友跟随小编一起看看吧
    2021-04-04
  • PyQt5结合QtDesigner实现文本框读写操作

    PyQt5结合QtDesigner实现文本框读写操作

    本文将结合实例代码,介绍PyQt5结合QtDesigner实现文本框读写操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • python中的post请求解读

    python中的post请求解读

    文章介绍了Python中POST请求的4种编码方式:application/x-www-form-urlencoded、multipart/form-data、application/json和text/xml,通过代码示例和工具使用,展示了如何发送和处理这些请求
    2024-11-11
  • django和flask哪个值得研究学习

    django和flask哪个值得研究学习

    在本篇文章里小编给大家整理的是一篇关于django和flask哪个值得研究学习内容,需要的朋友们可以参考下。
    2020-07-07
  • Python实现字符串与数组相互转换功能示例

    Python实现字符串与数组相互转换功能示例

    这篇文章主要介绍了Python实现字符串与数组相互转换功能,结合具体实例形式分析了Python字符串与数组相关转换功能的相关实现技巧与注意事项,需要的朋友可以参考下
    2017-09-09
  • pandas实现datetime64与unix时间戳互转

    pandas实现datetime64与unix时间戳互转

    这篇文章主要介绍了pandas实现datetime64与unix时间戳互转,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07

最新评论