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实现探测socket和web服务示例
Mar 28 Python
Python中分数的相关使用教程
Mar 30 Python
python中实现精确的浮点数运算详解
Nov 02 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
pandas中Timestamp类用法详解
Dec 11 Python
TensorFlow saver指定变量的存取
Mar 10 Python
对Python 内建函数和保留字详解
Oct 15 Python
python感知机实现代码
Jan 18 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
Python chardet库识别编码原理解析
Feb 18 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
基于Python实现下载网易音乐代码实例
Aug 10 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 5.5 新特性
2013/07/02 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
Laravel 5.5 异常处理 & 错误日志的解决
2019/10/17 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
微信小程序 开发之全局配置
2017/05/05 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
Python中的lstrip()方法使用简介
2015/05/19 Python
python中的二维列表实例详解
2018/06/19 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
python支付宝支付示例详解
2019/08/22 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
Python字符串三种格式化输出
2020/09/17 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
英国手机零售商:Metrofone
2019/03/18 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
Linux文件操作命令都有哪些
2015/02/27 面试题
文秘专业毕业生就业推荐信
2013/11/08 职场文书
给老师的检讨书
2014/02/11 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
涨价通知
2015/04/23 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server