冒泡排序
数据结构:数组
冒泡排序也是数组排序常用的排序算法,个人理解:循环从数组中比较两个值的大小,将大的值往一端移动,选出最大值,接着冒泡第二大值。循环直到所有数据顺序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))
}