打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
算法七:计数排序(O(n+k))
 
计数排序假设n个输入元素中每一个都是介于0到k之间的整数,此处k为某个整数。当k=O(n)时,计数排序的运行时间为O(n)(其实是O(n+k))。
计数排序的思想就是:对每一个元素x,确定出小于x的元素的个数,从而根据这个信息直接把元素x放在输出的位置上。
 
假定A[1..n]为输入,B[1..n]为输出,C[1..k]为临时存储区:
counting_sort(A, B, C)
1   for i in 0 to k
2           do C[i] = 0
3   for j in 1 to length[A]
4           do C[A[j]] ++                //C[i]包含等于i的元素的个数
5   for i in 1 to k 
6           do C[i] += C[i-1]          //C[i]包含小于等于i的元素的个数
7   for j in length[A] to 1
8           do B[C[A[j]]] = A[j]
9                 C[A[j]] --
 
计数排序有个重要的性质就是它是稳定的:具有相同值的元素再输出数组中的相对次序与它们在输入数组中次序是相同的。
 
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Java排序算法详解—— 二分插入排序
算法系列: 10大常见排序算法(2) 选择排序
经典算法之冒泡排序
高考排列组合归纳总结
C语言冒泡排序算法及代码
5分钟了解折半插入排序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服