Golang(二十一)[排序算法-冒泡排序]

Golang-排序算法-冒泡排序

在这里插入图片描述

1.简介

冒泡排序Bubble Sort)是一种较为简单的排序算法,重复的走访要排序的数列,一次比较两个元素,如果顺序错误就交换,走访舒蕾的工作是重复的进行指导没有需要再交换的位置,如同水中的气泡最终上浮到顶端一样。
冒泡排序Bubble Sort)还有一种优化算法,就是立一个flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。

2.原理

以升序排序为例

  1. 比较相邻的元素,如果第一个比第二个大,就交换彼此;
  2. 对每一对相邻元素做同样的工作,从开始第一对结尾的最后一对,此时,最后打的元素应该是最大的数; 针对所有元素重复以上步骤,除了最后一个;
  3. 持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较。

3.Golang代码

package main

import "fmt"

// 冒泡排序
func main() {
	var arr = []int{9, 10, 11, 5, 3, 6, 5, 4, 1, 22, 15}
	//升序
	bubbleAscendingSort(arr)
	//降序
	bubbleDescendingSort(arr)
}
func bubbleAscendingSort(arr []int) {
	for i := 0; i < len(arr)-1; i++ {
		for j := i + 1; j < len(arr); j++ {
			if arr[i] > arr[j] {
				arr[i], arr[j] = arr[j], arr[i]
			}
		}
	}
	fmt.Println(arr)
}
func bubbleDescendingSort(arr []int) {
	for i := 0; i < len(arr)-1; i++ {
		for j := i + 1; j < len(arr); j++ {
			if arr[i] < arr[j] {
				arr[i], arr[j] = arr[j], arr[i]
			}
		}
	}
	fmt.Println(arr)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章