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 相关文章推荐
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
详解Python map函数及Python map()函数的用法
Nov 16 Python
Python使用PIL模块生成随机验证码
Nov 21 Python
Python贪心算法实例小结
Apr 22 Python
python实现简易内存监控
Jun 21 Python
opencv实现简单人脸识别
Feb 19 Python
python集合常见运算案例解析
Oct 17 Python
python模块导入的方法
Oct 24 Python
Python reduce函数作用及实例解析
May 08 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
Python实现Hash算法
Mar 18 Python
Python sklearn分类决策树方法详解
Sep 23 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中文本数据翻页(留言本翻页)
2006/10/09 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
Vue入门之animate过渡动画效果
2018/04/08 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
python对html代码进行escape编码的方法
2015/05/04 Python
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
python压包的概念及实例详解
2021/02/17 Python
大学教师年终总结的自我评价
2013/10/29 职场文书
职业生涯规划书前言
2014/04/15 职场文书
经济管理自荐书
2014/06/09 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
走近毛泽东观后感
2015/06/04 职场文书