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 06 Python
Python的函数嵌套的使用方法
Jan 24 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
Jun 16 Python
Python方法的延迟加载的示例代码
Dec 18 Python
python format 格式化输出方法
Jul 16 Python
python实现AES加密和解密
Mar 27 Python
Python画图高斯分布的示例
Jul 10 Python
python查看数据类型的方法
Oct 12 Python
Window系统下Python如何安装OpenCV库
Mar 05 Python
解决redis与Python交互取出来的是bytes类型的问题
Jul 16 Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 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实现的QQ空间g_tk加密算法
2015/07/09 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
js parsefloat parseint 转换函数
2010/01/21 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
jquery实现用户信息修改验证输入方法汇总
2015/07/18 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
3个用于数据科学的顶级Python库
2018/09/29 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
python Tkinter版学生管理系统
2019/02/20 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
python关闭占用端口方式
2019/12/17 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python短信轰炸的代码
2020/03/25 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
学python最电脑配置有要求么
2020/07/05 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
副总经理任命书
2014/06/05 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
redis lua限流算法实现示例
2022/07/15 Redis