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 06 Python
python中去空格函数的用法
Aug 21 Python
python中urllib模块用法实例详解
Nov 19 Python
PyMongo安装使用笔记
Apr 27 Python
python实现数值积分的Simpson方法实例分析
Jun 05 Python
python实现获取Ip归属地等信息
Aug 27 Python
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
Python3爬虫mitmproxy的安装步骤
Jul 29 Python
DRF使用simple JWT身份验证的实现
Jan 14 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
一个简单计数器的源代码
2006/10/09 PHP
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
让Python代码更快运行的5种方法
2015/06/21 Python
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
python实现验证码识别功能
2018/06/07 Python
深入理解Python异常处理的哲学
2019/02/01 Python
Django对models里的objects的使用详解
2019/08/17 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
美国家具网站:Cymax
2016/09/17 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
上课迟到检讨书100字
2014/01/11 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
大学生交通专业求职信
2014/09/01 职场文书
先进单位申报材料
2014/12/25 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
英文升职感谢信
2015/01/23 职场文书
2015年资料员工作总结
2015/04/25 职场文书
公司员工离职感言
2015/08/03 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android