Python实现的计数排序算法示例

 更新时间:2017年11月29日 12:12:55   作者:爱橙子的OK绷  
这篇文章主要介绍了Python实现的计数排序算法,简单描述了计数排序的算法原理并结合具体实例形式分析了Python计数排序的相关实现与使用技巧,需要的朋友可以参考下

本文实例讲述了Python实现的计数排序算法。分享给大家供大家参考,具体如下:

计数排序是一种非常快捷的稳定性强的排序方法,时间复杂度O(n+k),其中n为要排序的数的个数,k为要排序的数的组大值。计数排序对一定量的整数排序时候的速度非常快,一般快于其他排序算法。但计数排序局限性比较大,只限于对整数进行排序。计数排序是消耗空间发杂度来获取快捷的排序方法,其空间发展度为O(K)同理K为要排序的最大值。

计数排序的基本思想为一组数在排序之前先统计这组数中其他数小于这个数的个数,则可以确定这个数的位置。例如要排序的数为 7 4 2 1 5 3 1 5;则比7小的有7个数,所有7应该在排序好的数列的第八位,同理3在第四位,对于重复的数字,1在1位和2位(暂且认为第一个1比第二个1小),5和1一样位于6位和7位。

示例代码:

#! /usr/bin/env python
#coding=utf-8
#计数排序
def CountingSort(a, b, k):
  #c=[0]*(k+1) #let c[0...k] be an all 0 array
  #c=[0 for i in range(0,k+1)]
  c=[]
  for i in range(k+1):
    c.append(0)
  for j in range(len(a)):
    c[a[j]] = c[a[j]] + 1
  for i in range(1, k+1):
    c[i] = c[i] + c[i-1]
  for j in range(len(a)-1, -1, -1):
    b[c[a[j]]-1] = a[j]#!!!!!减一是关键
    c[a[j]] = c[a[j]] - 1
  print b
if __name__ == '__main__':
  a=[2, 5, 3, 0, 2, 3, 0, 3]
  #b=[0]*len(a)
  b=[None for i in range(len(a))]
  print "脚本之家测试结果:"
  CountingSort(a, b, max(a))

运行结果:

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

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

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

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

相关文章

  • python+OpenCV人脸识别考勤系统实现的详细代码

    python+OpenCV人脸识别考勤系统实现的详细代码

    作为一个基于人脸识别算法的考勤系统的设计与实现教程,以下内容将提供详细的步骤和代码示例。本教程将使用 Python 语言和 OpenCV 库进行实现,需要的朋友可以参考下
    2023-05-05
  • 解决Pymongo insert时会自动添加_id的问题

    解决Pymongo insert时会自动添加_id的问题

    这篇文章主要介绍了解决Pymongo insert时会自动添加_id的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • python使用rstrip函数删除字符串末位字符

    python使用rstrip函数删除字符串末位字符

    rstrip函数用于删除字符串末位指定字符,默认为空白符,这篇文章主要介绍了python使用rstrip函数删除字符串末位字符的方法,需要的朋友可以参考下
    2023-04-04
  • 使用PySpider进行IP代理爬虫的技巧与实践分享

    使用PySpider进行IP代理爬虫的技巧与实践分享

    PySpider是一个基于Python的强大的开源网络爬虫框架,它使用简单、灵活,并且具有良好的扩展性,本文将介绍如何使用PySpider进行IP代理爬虫,并提供一些技巧和实践经验,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-03-03
  • python连接clickhouse的端口问题及解决

    python连接clickhouse的端口问题及解决

    这篇文章主要介绍了python连接clickhouse的端口问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python数据结构之图的应用示例

    Python数据结构之图的应用示例

    这篇文章主要介绍了Python数据结构之图的应用,结合实例形式分析了Python数据结构中图的定义与遍历算法相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • Python正确重载运算符的方法示例详解

    Python正确重载运算符的方法示例详解

    这篇文章主要给大家介绍了关于Python如何正确重载运算符的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们参考借鉴,下面随着小编来一起学习学习吧。
    2017-08-08
  • TensorFlow保存TensorBoard图像操作

    TensorFlow保存TensorBoard图像操作

    这篇文章主要介绍了TensorFlow保存TensorBoard图像操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python游戏开发之视频转彩色字符动画

    python游戏开发之视频转彩色字符动画

    这篇文章主要为大家详细介绍了python游戏开发之视频转彩色字符动画,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Python urllib 入门使用详细教程

    Python urllib 入门使用详细教程

    urllib 库,它是 Python 内置的 HTTP 请求库,不需要额外安装即可使用,这篇文章主要介绍了Python urllib 入门使用,需要的朋友可以参考下
    2022-11-11

最新评论