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文件读写操作与linux shell变量命令交互执行的方法
Jan 14 Python
Python中操作MySQL入门实例
Feb 08 Python
在Python中使用判断语句和循环的教程
Apr 25 Python
Django日志模块logging的配置详解
Feb 14 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
Python decorator拦截器代码实例解析
Apr 04 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
python 如何快速复制序列
Sep 07 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
Dec 04 Python
如何用 Python 制作一个迷宫游戏
Feb 25 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
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
PHP fclose函数用法总结
2019/02/15 PHP
Javascript学习笔记1 数据类型
2010/01/11 Javascript
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
nodejs aes 加解密实例
2018/10/10 NodeJs
VUE 动态组件的应用案例分析
2019/12/02 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
详解Python的Django框架中的中间件
2015/07/24 Python
Python的pycurl包用法简介
2015/11/13 Python
Python中的默认参数实例分析
2018/01/29 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
满月酒答谢词
2014/01/14 职场文书
投资申请报告
2015/05/19 职场文书
三八节活动主持词
2015/07/04 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang