数组排序简介-冒泡排序(Bubble Sort)

基本思想

        经过多次迭代,通过相邻元素之间的比较与交换,使值较小的元素逐步从后面移到前面,值较大的元素从前面移到后面。

排序步骤

        首先将数组想象是一排「泡泡」,元素值的大小与泡泡的大小成正比。
        然后从左到右依次比较相邻的两个「泡泡」:
                如果左侧泡泡大于右侧泡泡,则交换两个泡泡的位置。
                如果左侧泡泡小于等于右侧泡泡,则两个泡泡保持不变。
        这 1趟遍历完成之后,最大的泡泡就会放置到所有泡泡的最右侧,就像是「泡泡」从水底向上浮到了水面。

        以此类推进行后面的数字排序;

适用情况

        冒泡排序方法在排序过程中需要移动较多次数的元素,并且排序时间效率比较低。因此,冒泡排序方法比较适合于参加排序序列的数据量较小的情况,尤其是当序列的初始状态为基本有序的情况。

排序稳定性

        由于元素交换是在相邻元素之间进行的,不会改变相等元素的相对顺序,因此,冒泡排序法是一种 稳定排序算法

代码实现(golang)

func bubbleSort(arr []int) {
    n := len(arr)
    for i := 0; i < n-1; i++ {
       for j := 0; j < n-i-1; j++ {
          if arr[j] > arr[j+1] {
             arr[j], arr[j+1] = arr[j+1], arr[j]
          }
       }
    }
}

func main() {
    arr := []int{64, 34, 25, 12, 22, 11, 90}
    bubbleSort(arr)
    fmt.Println(arr) // 输出 [11 12 22 25 34 64 90]
}

猜你喜欢

转载自blog.csdn.net/Runing_WoNiu/article/details/143314730
今日推荐