Go-冒泡排序
排序
冒泡排序
思路:前一个和后一个比较,如果前一个大于后一个则互换值,
第一轮把最大的值放到右边,
第二轮把第二大的值放到右边第二个,
一直到最后一轮,没有换值则表明已经排好
数组:{14, 13, 12}
第一轮
先拿14和3比较,大于所以换值,现在数组成了{13,14,12}
然后14和12比较,大于就换值,现在数组成了{13,12,14}
第二轮
13和12比较,大于换值,现在数组成了{12,13,14}
总结:3个元素需要比较2轮,第一轮比较2次,二轮比较1次
轮数:len(arr)-1
每轮次数:len(arr)-1
func main() {
s := []int{14, 13, 12}
c := BubbleSort(s)
fmt.Println(c)
}
//BubbleSort 冒泡排序
func BubbleSort(s []int) []int {
for i := len(s) - 1; i > 0; i-- {
flag := 0
for j := 0; j < i; j++ {
if s[j] > s[j+1] {
k := 0
k = s[j+1]
s[j+1] = s[j]
s[j] = k
flag++
}
}
if flag == 0 {
break
}
}
return s
}