线性时间排序

在最坏情况下任何比较排序算法都需要做Ω(nlgn)次比较

计数排序:假设输入的数据都属于一个小区间内的整数
Counting-sort(A,B,k)
 1. let c[0..k] be a new array
 2. for i=0 to k
 3.    c[i]=0
 4. for j=1 to A.length
 5.   c[A(j)]=c[A(j)]+1    //c[i]为数组A中等于i的元素的个数
 6.for i=1 to k
 7.   c[i]=c[i-1]+c[i]      //c[i]为数组A中小于等于i的元素的个数
 8.for j=A.length downto 1
 9.   B[c[A(j)]=A(j)        
 10.  c[A(j)]=c[A(j)]-1

 总的时间代价为 0(n+k)

桶排序 :*假设输入数据服从均匀分布*,输入的数组包含n个元素,且每个元素都属于(01)区间上,同时需要一个临时数组存

BUCKET-SORT(A)

 1. n=A.length
 2. let B[0...n-1] be a new array
 3. for i=0 to n-1 
 4.   make B[i] be an empty list
 5. for i=1 to n
 6.   insert A[i] intp list B[小于等于nA[i]的最大整数]
 7. for i=0 to n-1 
 8.   sort list B[i] with insertion sort 
 9. concatenate the lists B[0],B[1],...B[n-1] together in order
 桶排序的期望运行时间为0(n)

这里写代码片
““`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值