冒泡排序的原理:
將左右相鄰的數兩兩比較,把最小的數移至最左端,在餘下的數中再重複進行上述步驟,直至沒有元素可以移動。
package bubblesort
func BubbleSort(values []int) {
flag := true
for i, size := 0, len(values); i < size; i++ {
flag = true
for j, end := 0, len(values)-i-1; j < end; j++ {
if values[j] > values[j+1] {
values[j], values[j+1] = values[j+1], values[j]
flag = false
}
}
if flag == true {
break
}
}
}
更簡潔的版本
package main
import "fmt"
func main() {
numbers := []int32{6, 3, 5, 2, 9, 8}
BubbleSort(numbers)
fmt.Println(numbers)
}
func BubbleSort(values []int32) {
last := len(values)-1
for i := 0; i < last; i++ {
// 循環i右側的所有元素
for j := last; j > i; j-- {
// 如果左側的比右側的元素大,就交換
if values[j] < values[j-1] {
values[j], values[j-1] = values[j-1], values[j]
}
}
//fmt.Println(values)
}
}