这期我们讲解一下,Golang中的冒泡排序法的实现 一、冒泡排序法

1.原理

①简单来说就是比较相邻的元素。如果第一个比第二个大,就交换他们两个,总共进行len-1轮。
在这里插入图片描述

2.1代码实现①

package main

import "fmt"

func main() {
	var arr [5]int = [5]int{4,3,1,5,2} //初始化定义数组
	for i:=0;i<len(arr);i++ {
		for j:= i+1;j<len(arr);j++ {
			if arr[i]>arr[j] { //如果当前数比后面数大就交换值,当前为升序,反之改成 <
				temp := arr[i]
				arr[i] = arr[j]
				arr[j] = temp
			}
		}
	}
	for _,v := range arr{
		fmt.Printf("%v",v)
	}
}

2.2代码实现②(推荐)

package main

import "fmt"

func main() {
	var arr []int = []int{24,69,80,57,13}
	for j:=0;j<len(arr)-1;j++ { //总共进行len-1轮排序
		for i:=0;i<len(arr)-1-j;i++ {//这里不减j也可以,只是优化
			if arr[i] > arr[i+1] {
				temp := arr[i]
				arr[i] = arr[i+1]
				arr[i+1] = temp
			}
		}
	}
	fmt.Println(arr)
}

3.逻辑分析

1.当i=0,j=1时 => arr[i]=4,arr[j]=3
所以通过 if arr[i]>arr[j] 条件交换值后,arr[i]=3 => arr[0]=3
[3 4 1 5 2]
循环变量j++后,j=2
此时arr[i]=3,再通过 if arr[i]>arr[j] 条件交换值后,arr[i]=1 => arr[0]=1
以此类推 j=3…
通过i=0这一轮内循环后,确定arr[0]=1
通过i=1这一轮内循环后,确定arr[1]=2
通过i=2这一轮内循环后,确定arr[2]=3
通过i=3这一轮内循环后,确定arr[3]=4
通过4轮循环后,即可排序成功,因为第4个数arr[3]确定了,第5个数自然水落石出!