学习基数排序之前首先学习计数排序

  学习基数排序之前首先学习计数排序。

  计数排序假设每个元素都是在0到k之间的一个整数。

  基数排序的基本思想,对于每个元素x,如果我们知道了小于x的元素的个数,就可以确定输出数组中元素x的位置,那么直接将元素x放到输出数组中。比如有3小于x的元素,那在输出数组中,x肯定位于第4个位置。

  计数排序的算法用伪代码描述为:

  17COUNTING-SORT(A,k)

  // 初始化数组C

  for i=0 to k

  C[i]=0

  // 统计A[j]元素出现的次数,保存到C数组中

  for j=0 to A.length

  C[A[j]]=C[A[j]]+1

  // 统计小于等于A[j]元素的个数

  for k=0 to k

  C[K]=C[K-1]+C[K]

  // 将A中的元素放在B中正确的位置

  for i=A.length to 0

  B[C[A[i]]-1]=A[i]

  C[A[i]]=C[A[i]]-1

  注:由于有可能有相同元素存在,所以,每次将A[i]元素放入B数组中,都要将C[A[j]]的值减一,这样当遇到下一个值等于A[j]的元素时,该元素就能放在输出数组中A[j]的前面。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值