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
}
posted @ 2020-12-19 19:33  JinweiChang  阅读(88)  评论(0编辑  收藏  举报