冒泡排序

数据结构:数组

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

 

posted on 2021-03-29 22:10  王章章章  阅读(109)  评论(0编辑  收藏  举报