冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
package main
import (
"fmt"
)
func bubble_sort(yarray []int) {
n := len(yarray)
if n < 2 {
return
}
for j := 0; j < n-1; j++ {
for i := 0; i < n-1-j; i++ {
if yarray[i] > yarray[i+1] {
yarray[i], yarray[i+1] = yarray[i+1], yarray[i]
}
}
}
}
func main() {
xarray := []int{
48, 96, 86, 68,
57, 82, 63, 70,
37, 34, 83, 27,
19, 97, 9, 17,
}
fmt.Println("before sort:", xarray)
bubble_sort(xarray)
fmt.Println("after sort:", xarray)
}