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 19 Python
详解python并发获取snmp信息及性能测试
Mar 27 Python
Python线性方程组求解运算示例
Jan 17 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
python统计字母、空格、数字等字符个数的实例
Jun 29 Python
Python List cmp()知识点总结
Feb 18 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
python程序快速缩进多行代码方法总结
Jun 23 Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 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 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
php 可变函数使用小结
2018/06/12 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
简单介绍Python中的round()方法
2015/05/15 Python
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
实习期自我鉴定
2013/10/11 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
横空出世观后感
2015/06/09 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL
python 如何用terminal输入参数
2021/05/25 Python
室外天线与收音机天线杆接合方法
2022/04/05 无线电
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL