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


Posted in Python onNovember 29, 2017

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

运行结果:

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

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

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

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

Python 相关文章推荐
python远程登录代码
Apr 29 Python
详解Python当中的字符串和编码
Apr 25 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
浅谈对yield的初步理解
May 29 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
django认证系统 Authentication使用详解
Jul 22 Python
解决tensorflow添加ptb库的问题
Feb 10 Python
JAVA SWT事件四种写法实例解析
Jun 05 Python
图解Python中深浅copy(通俗易懂)
Sep 03 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 #Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 #Python
Python快速排序算法实例分析
Nov 29 #Python
Python3学习urllib的使用方法示例
Nov 29 #Python
Python实现的选择排序算法示例
Nov 29 #Python
Python实现的桶排序算法示例
Nov 29 #Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 #Python
You might like
PHP 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
FleaPHP的安全设置方法
2008/09/15 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
ThinkPHP控制器详解
2015/07/27 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
JS高级笔记
2011/07/13 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
vuejs绑定class和style样式
2017/04/11 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
Python中的jquery PyQuery库使用小结
2014/05/13 Python
python3.x上post发送json数据
2018/03/04 Python
Flask之flask-session的具体使用
2018/07/26 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
序列化Python对象的方法
2020/08/01 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
python实现简单遗传算法
2020/09/18 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
家长评语大全
2014/01/22 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
python 详解turtle画爱心代码
2022/02/15 Python
MySQL数据库完全卸载的方法
2022/03/03 MySQL
代码复现python目标检测yolo3详解预测
2022/05/06 Python