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随机生成信用卡卡号的实现方法
May 14 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
python批量替换页眉页脚实例代码
Jan 22 Python
Django框架多表查询实例分析
Jul 04 Python
如何优雅地处理Django中的favicon.ico图标详解
Jul 05 Python
JSON文件及Python对JSON文件的读写操作
Oct 07 Python
Python实现字典按key或者value进行排序操作示例【sorted】
May 03 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
Aug 24 Python
基于python爬取链家二手房信息代码示例
Oct 21 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 Python
Jupyter Notebook 如何修改字体和大小以及更改字体样式
Jun 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学习之 数组声明
2011/06/09 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
Django rest framework实现分页的示例
2018/05/24 Python
python 处理string到hex脚本的方法
2018/10/26 Python
python定位xpath 节点位置的方法
2019/08/27 Python
Python3 翻转二叉树的实现
2019/09/30 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
python温度转换华氏温度实现代码
2020/12/06 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
苹果中国官方网站:Apple中国
2016/07/22 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
医学毕业生自我鉴定
2013/10/30 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
简单租房协议书范本
2014/08/20 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
2014年技术部工作总结
2014/12/12 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
班主任寄语2016
2015/12/04 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
导游词之河北邯郸
2019/09/12 职场文书
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB