码迷,mamicode.com
首页 > 编程语言 > 详细

算法导论学习笔记——第8章 线性时间排序

时间:2015-05-24 17:18:52      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

任意一种比较排序算法,在最坏情况下的运行时间下限是Ω(nlgn)

计数排序

假设n个输入元素中的每一个都是介于0到k之间的整数,k为某个整数,当k=O(n)时,计数排序的运行时间为Θ(n)

 1 //输入数组A[1..n],存放排序结果数组B[1..n],临时存储区C[0..k]
 2 COUNTING-SORT(A,B,k)
 3 for i←0 to k
 4     do C[i]←0
 5 for j←1 to length[A]
 6     do C[A[j]]←C[A[j]]+1
 7 for i←1 to k
 8     do C[i]←C[i]+C[i-1]
 9 for j←length[A] downto 1
10     do B[C[A[j]]]←A[j]
11         C[A[j]]←C[A[j]]-1

基数排序

假设长度为n的数组A中,每个元素都有d位数字,其中第1位是最低位,第d位是最高位

1 RADIX-SORT(A,d)
2 for i←1 to d
3     do use a stable sort to sort array A on digit i

桶排序

假设输入由一个随机过程产生,该过程将元素均匀的分布在区间[0,1)上

1 BUCKET-SORT(A)
2 n←length[A]
3 for i←1 to n
4     do insert A[i] into list B[floor(nA[i])]
5 for i←0 to n-1
6     do sort list B[i] with insertion sort
7 concatenate the lists B[0],B[1]...B[n-1] together in order

 

算法导论学习笔记——第8章 线性时间排序

标签:

原文地址:http://www.cnblogs.com/pzpzpop/p/4526073.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!