规则
每一轮操作找出一个最大值:比较数值,交换位置,直到最大的数值,经依次的交换位置排放到最后的位置
循环每一轮的操作,依次找出每一轮的最大值,直到确定每一轮的最大值即可
图解
代码实现
package mainimport "fmt"func sortBubble(arr *[5]int) {temp := 0for i := 0; i < len(*arr)-1; i++ {for j := 0; j < len(*arr)-1-i; j++ {if (*arr)[j] > (*arr)[j+1] {// (*arr)[j] > (*arr)[j+1] 从小到大 交换位置// (*arr)[j] < (*arr)[j+1] 从大到小 交换位置temp = (*arr)[j](*arr)[j] = (*arr)[j+1](*arr)[j+1] = temp}}fmt.Printf("第%v轮排序后的结果: %v \n", i+1, *arr)}/* for j := 0; j < len(arr)-1; j++ {if (*arr)[j] > (*arr)[j+1] {// 交换位置temp = (*arr)[j](*arr)[j] = (*arr)[j+1](*arr)[j+1] = temp}}fmt.Println("第1轮排序后的结果: ", *arr)for j := 0; j < len(arr)-2; j++ {if (*arr)[j] > (*arr)[j+1] {// 交换位置temp = (*arr)[j](*arr)[j] = (*arr)[j+1](*arr)[j+1] = temp}}fmt.Println("第2轮排序后的结果: ", *arr)for j := 0; j < len(arr)-3; j++ {if (*arr)[j] > (*arr)[j+1] {// 交换位置temp = (*arr)[j](*arr)[j] = (*arr)[j+1](*arr)[j+1] = temp}}fmt.Println("第3轮排序后的结果: ", *arr)for j := 0; j < len(arr)-4; j++ {if (*arr)[j] > (*arr)[j+1] {// 交换位置temp = (*arr)[j](*arr)[j] = (*arr)[j+1](*arr)[j+1] = temp}}fmt.Println("第4轮排序后的结果: ", *arr) */}func main() {var arr [5]int = [5]int{24, 69, 80, 57, 13}fmt.Println("排序前 arr = ", arr)// 冒泡排序sortBubble(&arr)fmt.Println("排序后 arr = ", arr)}排序前 arr = [24 69 80 57 13]第1轮排序后的结果: [24 69 57 13 80]第2轮排序后的结果: [24 57 13 69 80]第3轮排序后的结果: [24 13 57 69 80]第4轮排序后的结果: [13 24 57 69 80]排序后 arr = [13 24 57 69 80]
