golang冒泡排序算法

冒泡排序的原理:

將左右相鄰的數兩兩比較,把最小的數移至最左端,在餘下的數中再重複進行上述步驟,直至沒有元素可以移動。


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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章