冒泡排序的原理:

将左右相邻的数两两比较,把最小的数移至最左端,在余下的数中再重复进行上述步骤,直至没有元素可以移动。


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)
   }
}