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中hashlib模块用法示例
Oct 30 Python
Python3.6 Schedule模块定时任务(实例讲解)
Nov 09 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
Jan 09 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
Python异常的检测和处理方法
Oct 26 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
python进度条显示之tqmd模块
Aug 22 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
使用python创建股票的时间序列可视化分析
Mar 03 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和ACCESS写聊天室(八)
2006/10/09 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
JS读取XML文件示例代码
2013/11/15 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
2014/05/08 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
浅析javascript的return语句
2015/12/15 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
浅析Python中else语句块的使用技巧
2016/06/16 Python
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
python实现自动解数独小程序
2019/01/21 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
python3 线性回归验证方法
2019/07/09 Python
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
银行领导证婚词
2014/01/11 职场文书
先进党支部事迹材料
2014/01/13 职场文书
房地产开盘策划方案
2014/02/10 职场文书
《风筝》教学反思
2014/04/10 职场文书
群众路线对照检查材料
2014/09/22 职场文书
党员批评与自我批评
2014/10/15 职场文书
继承公证书格式
2015/01/26 职场文书
男生贾里读书笔记
2015/06/30 职场文书
详解nodejs内置模块
2021/05/06 NodeJs
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS