golang-merge-sort

freedbg · · 810 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

迭代版排序 ```go package main import ( "fmt" ) func main() { var arr = []int{6, 5, 3, 1, 8, 7, 2, 4, 9} fmt.Println(arr) fmt.Println(MergeSort(arr)) } func MergeSort(arr []int) []int { var alen = len(arr) var ns = make([]int, alen, alen) var tmp = &arr var stmp = &ns for add := 1; add < alen; add *= 2 { fmt.Println(add) var start1 = 0 var start2 = 0 ik := 0 for start1 = 0; start1 < alen; start1 = start1 + add { start2 = start1 + add var end1 = start1 + add var end2 = start2 + add for start1 < end1 && start2 < end2 && start1 < alen && start2 < alen { if (*tmp)[start1] < (*tmp)[start2] { (*stmp)[ik] = (*tmp)[start1] start1++ } else { (*stmp)[ik] = (*tmp)[start2] start2++ } ik++ fmt.Println(*stmp) } for start1 < end1 && start1 < alen { (*stmp)[ik] = (*tmp)[start1] start1++ ik++ fmt.Println(*stmp) } for start2 < end2 && start2 < alen { (*stmp)[ik] = (*tmp)[start2] start2++ ik++ fmt.Println(*stmp) } } tmp, stmp = stmp, tmp for index, _ := range *stmp { (*stmp)[index] = 0 } } return (*tmp) } ``` 感觉写不是太好,有没有什么办法直接复制指定长度内存?请大神回复

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

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

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