Golang Programming BubbleSort(冒泡排序)

in golang •  6 years ago 

冒泡排序(Bubble Sorting)

排序基本介绍:

排序是将一组数据,依指定的顺序进行排列的过程。

排序的分类:

  • 1.内部排序:

    指将需要处理的所有数据都加载到内部存储器中进行排序。
    包括(交换式排序法、选择式排序法和插入式排序法);

  • 2.外部排序法:

    数据量过大,无法全部加载到内存中,需要借助外部存储进行排序;
    包括(合并排序法和直接合并排序法).

冒泡排序(Bubble Sorting)的基本思想:

  • 通过对 待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换;

  • 使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就像水底下的气泡一样逐渐向上冒。

  • 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序;

  • 因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较(优化).

package main

import "fmt"

// 冒泡排序实现:
func BubbleSort(arr *[5]int) {
    fmt.Println("排序前arr=",(*arr))
    temp := 0 // 临时变量(用于做交换)

    //冒泡排序:
    for i := 0; i < len(*arr) - 1; i++ {
        for j := 0; j < len(*arr) - 1 - i; j++ {
            if (*arr)[j] > (*arr)[j+1] {
                //交换
                temp = (*arr)[j]
                (*arr)[j] = (*arr)[j + 1]
                (*arr)[j + 1] = temp
            }
        }
    }
    fmt.Println("排序后arr=",(*arr))
}

func main() {
    // 定义数组
    arr := [5]int{24,69,80,57,13}

    // 将数组传递给BubbleSort函数,完成排序:
    BubbleSort(&arr)

    fmt.Println("main arr=",arr)
}
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!