【go】插入排序

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

在学习go的过程中,正好在看《算法导论》,于是实现了一下插入排序:

package main

import (
"fmt"
"rand"
"time"
)

func main() {
arr := Random(10)
array := Copy(arr)
result := Sort(array)
fmt.Println("arr:\t", arr)
fmt.Println("result:\t", result)
}

func Sort(arr []int32) []int32 {
length := len(arr)
for i := 1; i < length; i++ {
key := arr[i]
var j int
for j = i - 1; j >=0 && arr[j] > key; j-- {
arr[j+1] = arr[j]
}
arr[j+1] = key
}
return arr
}

func Copy(src []int32)[] int32{
length := len(src)
dest := make([]int32, length)
for i := 0; i < length; i++ {
dest[i] = src[i]
}
return dest
}

func Random(length int32) []int32{
result := make([]int32, length)
var i int32 = 0
for i = 0; i < length; i++ {
rand.Seed(time.Nanoseconds())
result[i] = rand.Int31n(100)
}
return result
}

在sort中循环中判断终止条件,判断顺序是从左至右的,将j >=0 && arr[j] > key;两个条件调换顺序会出现index outof range的错误;在打印相关函数中,输出顺序也是从左至右的,可参考上一篇《【go】++/--不是操作符》中的例子。
数组作为函数参数与c语言中类似。传入参数首地址,对整个数组都会进行相应处理。


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

本文来自:CSDN博客

感谢作者:fudiy

查看原文:【go】插入排序

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

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