命令记不住

登陆

冒泡排序

冒泡排序

单向冒泡排序的基本思想是,假设由小到大排序,对于给定的n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换其位置,进行一轮比较和换位后,n个记录中的最大记录将位于第n位,然后对前(n-1)个记录进行第二轮比较;重复该过程直到进行比较的记录只剩下一个时为止.

package main

import "fmt"

func BubbleSort(array []int) {
	llen := len(array)
	for i := 0; i < llen-1; i++ {
		for j := llen - 1; j > i; j-- {
			if array[j] < array[j-1] {
				tmp := array[j]
				array[j] = array[j-1]
				array[j-1] = tmp
				fmt.Printf("排序过程: %v\n", array)
			}
		}
	}
}

func main() {
	array := []int{5, 4, 9, 8, 7, 6, 0, 1, 3, 2}
	BubbleSort(array)
	fmt.Println("排序结果如下:")
	fmt.Println(array)
}

排序过程如下

[administrator@administrator-dev 20210330]$ go run  02.go 
排序过程: [5 4 9 8 7 6 0 1 2 3]
排序过程: [5 4 9 8 7 0 6 1 2 3]
排序过程: [5 4 9 8 0 7 6 1 2 3]
排序过程: [5 4 9 0 8 7 6 1 2 3]
排序过程: [5 4 0 9 8 7 6 1 2 3]
排序过程: [5 0 4 9 8 7 6 1 2 3]
排序过程: [0 5 4 9 8 7 6 1 2 3]
排序过程: [0 5 4 9 8 7 1 6 2 3]
排序过程: [0 5 4 9 8 1 7 6 2 3]
排序过程: [0 5 4 9 1 8 7 6 2 3]
排序过程: [0 5 4 1 9 8 7 6 2 3]
排序过程: [0 5 1 4 9 8 7 6 2 3]
排序过程: [0 1 5 4 9 8 7 6 2 3]
排序过程: [0 1 5 4 9 8 7 2 6 3]
排序过程: [0 1 5 4 9 8 2 7 6 3]
排序过程: [0 1 5 4 9 2 8 7 6 3]
排序过程: [0 1 5 4 2 9 8 7 6 3]
排序过程: [0 1 5 2 4 9 8 7 6 3]
排序过程: [0 1 2 5 4 9 8 7 6 3]
排序过程: [0 1 2 5 4 9 8 7 3 6]
排序过程: [0 1 2 5 4 9 8 3 7 6]
排序过程: [0 1 2 5 4 9 3 8 7 6]
排序过程: [0 1 2 5 4 3 9 8 7 6]
排序过程: [0 1 2 5 3 4 9 8 7 6]
排序过程: [0 1 2 3 5 4 9 8 7 6]
排序过程: [0 1 2 3 5 4 9 8 6 7]
排序过程: [0 1 2 3 5 4 9 6 8 7]
排序过程: [0 1 2 3 5 4 6 9 8 7]
排序过程: [0 1 2 3 4 5 6 9 8 7]
排序过程: [0 1 2 3 4 5 6 9 7 8]
排序过程: [0 1 2 3 4 5 6 7 9 8]
排序过程: [0 1 2 3 4 5 6 7 8 9]
排序结果如下:
[0 1 2 3 4 5 6 7 8 9]

推荐阅读