package main import "fmt" func main() { fmt.Println("执行 Bubble") fmt.Println(Bubble([]int{2, 1, 45, 13, 16, 3, 7})) fmt.Println("执行 Bubble2") fmt.Println(Bubble2([]int{2, 1, 45, 13, 16, 3, 7})) fmt.Println("执行 Bubble3") fmt.Println(Bubble3([]int{2, 1, 45, 13, 16, 3, 7})) fmt.Println("执行 Bubble4——1") fmt.Println(Bubble4([]int{2, 1, 45, 13, 16, 3, 7})) fmt.Println("执行 Bubble4——2") fmt.Println(Bubble4([]int{1, 2, 3, 4, 5, 6, 7})) fmt.Println("执行 Bubble4——3") fmt.Println(Bubble4([]int{7, 6, 5, 4, 3, 2, 1})) } /** Bubble 【优化】实现冒泡排序 a : 被排序数组 返回:排序完毕数组 */ func Bubble(a []int) []int { for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素 b := true // 定义变量优化 for ii := 0; ii < j-1; ii++ { // 循环无序列表部分 if a[i] < a[ii] { // 从一个元素与一个无序值比较 a[ii], a[i] = a[i], a[ii] // 较大的值移至后边 b = false // 发生交换 } } if b { // 为存在交换,结束循环 break } } return a } /** Bubble2 实现冒泡排序 a : 被排序数组 返回 :排序完毕数组 */ func Bubble2(a []int) []int { for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素 for ii := i + 1; ii < j; ii++ { // 循环无序列表部分 if a[i] > a[ii] { // 从一个元素与一个无序值比较 a[ii], a[i] = a[i], a[ii] // 较大的值移至后边 } } } return a } /** Bubble3 【异同】实现冒泡排序 a : 被排序数组 返回 :排序完毕数组 */ func Bubble3(a []int) []int { for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素 for ii := i; ii < j-1; ii++ { // 循环无序列表部分 if a[ii] > a[ii+1] { // 从一个元素与一个无序值比较 a[ii], a[ii+1] = a[ii+1], a[ii] // 较大的值移至后边 } } } return a } /** Bubble4 【异同-优化】实现冒泡排序 a : 被排序数组 返回 :排序完毕数组 */ func Bubble4(a []int) []int { for i, j := 0, len(a); i < j; i++ { // 循环列表元素每一个元素 b := true // 定义变量优化 for ii := 0; ii < j-1; ii++ { // 循环无序列表部分 if a[ii] > a[ii+1] { // 从一个元素与一个无序值比较 a[ii], a[ii+1] = a[ii+1], a[ii] // 较大的值移至后边 b = false } } if b { // 为存在交换,结束循环 break } } return a }