冒泡排序(Bubble Sort)
ps:數據結構與算法主要根據韓順平老師的課程優化修改+整理。
-
基本介紹
它重複地走訪要排序的元素列,依次比較兩個相鄰的元素,如果它們的順序錯誤就把它們交換過來。(穩定)
-
代碼實現
var n int func BubbleSort(values []int) { flag := true vLen := len(values) //一共比較n-1次 for i := 0; i < vLen-1; i++ { n++ //如果數組有序,flag將不會被改變,成功break flag = true for j := 0; j < vLen-i-1; j++ { if values[j] > values[j+1] { values[j], values[j+1] = values[j+1], values[j] flag = false } } //flag可用於提升效率,如果n-m次就是有序排列了,就可以break了 if flag { break } } } func main() { a := []int{1,2,3,4,5} BubbleSort(a) fmt.Println(a) //查看比較的次數 fmt.Println(n) }