分享
  1. 首页
  2. 文章

基数排序-Goalng语言

golanguage · · 2874 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

> 由于之前在golang中文社区没有查到radix-sort让我尴尬,就自己给出如下代码,如果不足也请大家指明 ```go import "strconv" func RadixSort(arr []int) []int{ if len(arr)<2{ fmt.Println("NO NEED TO SORT") return arr } maxl:=MaxLen(arr) return RadixCore(arr,0,maxl) } func RadixCore(arr []int,digit,maxl int) []int{ //核心排序机制时间复杂度 O( d( r+n ) ) if digit>=maxl{ return arr //排序稳定 } radix:=10 count:=make([]int,radix) bucket:=make([]int,len(arr)) for i:=0;i<len(arr);i++{ count[GetDigit(arr[i],digit)]++ } for i:=1;i<radix;i++{ count[i]+=count[i-1] } for i:=len(arr)-1;i>=0;i--{ d:=GetDigit(arr[i],digit) bucket[count[d]-1]=arr[i] count[d]-- } return RadixCore(bucket,digit+1,maxl) } func GetDigit(x,d int) int{ //获取某位上的数字 a:=[]int{1,10,100,1000,10000,100000,1000000} return (x/a[d])%10 } func MaxLen(arr []int) int{ //获取最大位数 var maxl,curl int for i:=0;i<len(arr);i++{ curl=len(strconv.Itoa(arr[i])) if curl>maxl{ maxl=curl } } return maxl } ``` 这是LSD法(排序稳定),即从最低位开始比较哦,还有一种从最高位开始比较法MSD(排序不稳定).

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2874 次点击
2 回复 | 直到 2018年05月17日 17:02:11
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏