go 实现冒泡排序和插入排序
冒泡排序:一次冒泡过程,只能把一个元素放到正确位置。实现:相邻的两个元素比较一下,如果 s [i]>s [i+1],替换位置。
最多需要冒泡 n 次;
func Buble(s []int) {
l := len(s)
if l < 2{
return
}
for i:=0; i<l; i++{
flag := true
for j:=0; j<l-i-1; j++ {
if s[j]>s[j+1] {
s[j],s[j+1] = s[j+1],s[j]
flag = false
}
}
if flag {
break
}
}
return
}
插入排序:就是把数据分成两部分,左边部分为排序好的,右边部分为未排序的。每次从右边取出一个元素 s [j], 和左边排序好的元素依次比较。然后合适的地方插入。
func InsertSort(s []int) {
len := len(s)
if len < 2 {
return
}
for i:=1; i<len; i++{
j := i-1
value := s[i]
for ; j>=0; j--{
if s[j] > value {
s[j+1] = s[j] //右移一位
}else{
break //只能跳出一层
}
}
s[j+1] = value
}
return
}
go 循环中,break 只能跳出一层循环。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: