go语言实现计数排序

思想:

  • 给出一串需要排序的数组,然后选出里面最大的数字,计算它有几位(个十百千位),然后对数组中其他的数字补零。

  • 开辟一个大小为10的count数组,用于做记录位数上面0-9的数出现的次数(大于或等于当前下标的个数)

  • 将原数组从后往前遍历,开辟一个辅助数组(help[])来存储新排序的元素,元素应存放在辅助数组中的位置的计算方式为:例如当前元素个位数(十位数)为4,则取count[4]中的数减一,就是当前元素应存放在辅助数组中的 位置,help[count[4]-1] = 当前元素,别忘记了count[4] = count[4]-1哦。

  • 当这一轮过完之后,然后最大数不止于个位数,还有十位数和百位数,那么一次按照个位数的处理方式完成其他位数的排序。

个位数的处理的结果如下图展示:
在这里插入图片描述

package main

import "fmt"

func main() {
   
	arr := []int{
   50, 23, 9, 46, 81, 102, 99, 43, 32, 14}
	radixSort(arr, 0, len(arr) - 1,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值