冒泡排序: (Bubble Sorting)基本思想是通过对待排序序列从后向前(从下标较大的元素开始)以此比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后补移向前部(从下标较大的单元移向单位较小的单元),就像水底的气泡一样逐渐向上冒。
因为排序的过程中,各元素不断的接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换,从而减少不必要的比较(优化)。
BubleSort.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package main;
import "fmt"
func main() {
array := []int{5,4,3,4,2}
res := bubleSort(array)
fmt.Println(res)
}
func bubleSort(array []int) []int {
length :=len(array)
//isChange :=false
for i:=0;i<length;i++ {
for j:=0;j<length-i-1;j++ {
// j <= length-i-1 这个是关键,每次 i ,少比较最后一位数组
if array[j] > array[j+1] {
array[j+1],array[j] = array[j],array[j+1]
//isChange = true
}
}
// 直接跳下次循环
// if !isChange {
// break;
// }
}
return array;
}
|
冒泡冒泡,就是每次循环都将最大的值,冒泡到数组最后,第二次冒泡也是从数组下标0位置开始。
到此这篇关于go实现冒泡排序的示例代码的文章就介绍到这了,更多相关go 冒泡排序内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://segmentfault.com/a/1190000038978351