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脚本
Feb 10 Python
python脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
python中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
python单例模式实例解析
Aug 28 Python
python try except 捕获所有异常的实例
Oct 18 Python
详解Python字典小结
Oct 20 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
Nov 01 Python
用Python写一个模拟qq聊天小程序的代码实例
Mar 06 Python
python3+selenium自动化测试框架详解
Mar 17 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
python3爬虫GIL修改多线程实例讲解
Nov 24 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
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
PHP实现简单登录界面
2019/10/23 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
python ansible服务及剧本编写
2017/12/29 Python
Python常见工厂函数用法示例
2018/03/21 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
Python如何在DataFrame增加数值
2020/02/14 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
Python 读取位于包中的数据文件
2020/08/07 Python
python中类与对象之间的关系详解
2020/12/16 Python
智乐游戏测试笔试题
2014/05/21 面试题
城市规划毕业生求职信
2013/10/10 职场文书
剪彩仪式主持词
2014/03/19 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
留学推荐信中文范文
2015/03/26 职场文书
2015年司机年终工作总结
2015/05/14 职场文书