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科学计算环境推荐——Anaconda
Jun 30 Python
python检测是文件还是目录的方法
Jul 03 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
May 17 Python
python调用OpenCV实现人脸识别功能
May 25 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
使用Python实现正态分布、正态分布采样
Nov 20 Python
配置python的编程环境之Anaconda + VSCode的教程
Mar 29 Python
Django REST framwork的权限验证实例
Apr 02 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
pytorch中index_select()的用法详解
Jan 06 Python
整理Python中常用的conda命令操作
Jun 15 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
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
php读取本地json文件的实例
2018/03/07 PHP
PHP实现获取url地址中顶级域名的方法示例
2019/06/05 PHP
Yii框架安装简明教程
2020/05/15 PHP
js中settimeout方法加参数
2014/02/28 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
js实现简单的轮播图效果
2020/12/13 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
用Python创建声明性迷你语言的教程
2015/04/13 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
python中调试或排错的五种方法示例
2019/09/12 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
Python安装Bs4的多种方法
2020/11/28 Python
数学高效课堂实施方案
2014/03/29 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
小学班级特色活动方案
2014/08/31 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
pandas数值排序的实现实例
2021/07/25 Python