核心原理:
比较相邻的两个元素,较大的一个交换移动到右边
优化:
已经排好序的元素不再进行比较,减少比较次数
下面函数的变量flag 用于判断后续元素有无发生交换,没有发生交换的直接停止遍历
变量lastSwapIndex,记录最后一次发生交换的位置,后续元素不再进行比较
//冒泡排序 func BubbleSort(arr *[]int){ flag:=true lastSwapIndex:=0 for i:=0;i<len(*arr)-1;i++{ sortBorder:=len(*arr)-1-i for j:=0;j<sortBorder;j++{ if (*arr)[j]>(*arr)[j+1]{ temp:=(*arr)[j] (*arr)[j]=(*arr)[j+1] (*arr)[j+1]=temp flag=false lastSwapIndex=j } } sortBorder=lastSwapIndex if flag{ break } } }