Python实现的计数排序算法示例
2017-11-29 12:12
615 查看
本文实例讲述了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))
运行结果:
PS:关于排序算法的详细说明还可参考本站在线工具:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具
http://tools.jb51.net/aideddesign/paixu_ys
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- Python基于socket模块实现UDP通信功能示例
- Python有序字典简单实现方法示例
- python3下实现搜狗AI API的代码示例
- Python实现绘制双柱状图并显示数值功能示例
- Python基于tkinter模块实现的改名小工具示例
- 利用 Python 实现多线程多任务提交 - matlab 函数示例
- Python实现快速计算词频功能示例
- python多线程http下载实现示例
- 干货|从决策树到随机森林:树型算法的实现原理与Python 示例
- Python和GO语言实现的消息摘要算法示例
- Python实现读取字符串按列分配后按行输出示例
- Python实现XML文件解析的示例代码
- Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
- python实现监控windows服务并自动启动服务示例
- Python实现将Excel转换为json的方法示例
- Python实现求数列和的方法示例
- Python 实现购物商城,含有用户入口和商家入口的示例
- Python极简代码实现杨辉三角示例代码
- Python实现批量读取图片并存入mongodb数据库的方法示例
- python多线程http下载实现示例