计数排序和基数排序

/*

算法将整数数组

   a[1,...,a[n]]

排序,每个整数的范围在0到m,包括0和m。

*/

InputParameters:a,m

OutputParameter:a

counting_sort(a,m){

  //设置c[k]=数组a中值k出现的次数。

  //开始将c初始换为0。

 for k = 0 to m

    c[k] = 0

 

 n = a.last

 for i = 1 to n

    c[a[i]] = c[a[i]]+1


//修改c,使c[k]小于等于k的元素个数

 for k = 1 to m

    c[k] = c[k] + c[k-1]

 

 //用b中的结果对a排序

 for i = n downto 1{

    b[c[a[i]]] = a[i]

    c[a[i]]=c[a[i]]-1

}


//将b复制回a

 for i =1 to n

    a[i]=b[i]

}


/*

  基数排序

  算法将整数数组

   a[1,...,a[n]]

  排序,每个整数最多k位。

*/

InputParameters: a,k

OutputParameter:a

radix_sort(a,k){

    for i = 0 to k-1

        counting_sort(a,10^i)  //键值是10^i位处的数字

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值