冒泡排序
数据结构:数组
冒泡排序也是数组排序常用的排序算法,个人理解:循环从数组中比较两个值的大小,将大的值往一端移动,选出最大值,接着冒泡第二大值。循环直到所有数据顺序OK
时间复杂度:O(n2)
代码实现如下
package main import ( "fmt" ) /** * @Author KyrieWang * @Description //TODO bubblesort 循环一次,把最大或者最小的数交换到最后面 * @Date 1:26 下午 2021/3/29 * @Param * @return */ // TODO 冒泡返回最大值 func BubbleMaxSort(input []int) int { for i := 1; i < len(input); i++ { if input[i] < input[i-1] { input[i-1], input[i] = input[i], input[i-1] // 交换位置 } } return input[len(input)-1] } // TODO 冒泡排序算法: 每次循环把第一个数字和后面的数进行对比,把大的数据往前排 排在第一个 func BubbleSort(input []int) []int { for i := 0; i < len(input); i++ { for j := i + 1; j < len(input); j++ { // 精髓在把最大的冒泡上来之后,再选第二个冒泡大的 if input[i] < input[j] { input[i], input[j] = input[j], input[i] } } } return input } func main() { inputData := []int{61, 12, 123, 41, 12, 23, 51, 67, 65} // 冒泡排序求出最大值 fmt.Println(BubbleMaxSort(inputData)) // 冒泡法排序 fmt.Println(BubbleSort(inputData)) }