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使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
matplotlib设置legend图例代码示例
Dec 19 Python
SVM基本概念及Python实现代码
Dec 27 Python
详解Python3的TFTP文件传输
Jun 26 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
Mar 29 Python
Python 3.8新特征之asyncio REPL
May 28 Python
python中append实例用法总结
Jul 30 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
Mar 14 Python
python绘制分布折线图的示例
Sep 24 Python
详解python网络进程
Jun 15 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
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
javaScript中push函数用法实例分析
2015/06/08 Javascript
js如何打印object对象
2015/10/16 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
js初始化验证实例详解
2016/11/26 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
JS typeof fn === 'function' && fn()详解
2020/08/22 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
python2.7安装图文教程
2018/03/13 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
对pandas中to_dict的用法详解
2018/06/05 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
Python使用进程Process模块管理资源
2020/03/05 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
药剂专业自荐信范文
2014/04/16 职场文书
健康教育评估方案
2014/05/25 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS