冒泡排序 - Go语言 -- 十安辰

一、基本思想

冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就象水底下的气泡- -样逐渐向上冒。


因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较(优化)


二、 图示过程

在这里插入图片描述


三、动图展示

如图:每次遍历都能确定一个数组元素(未排序的最大元素)的正确位置

在这里插入图片描述

四、代码实现

package main

import "fmt"

func BubbleSort(arr *[5]int){
	fmt.Println("Before the sorting: arr = ",(*arr))
    temp := 0	//临时变量用于交换
    arrLength = len(*arr)
    
    //冒泡遍历
    for i := 0; i < arrLength - 1; i++ {
        for j := 0; arrLength - 1 - i; j++ {
            if (*arr)[j] > (*arr)[j + 1]){
                //交换
                temp = (*arr)[j]
                (*arr)[j] = (*arr)[j + 1]
                (*arr)[j + 1] = (*arr)[j]
            }
        }
    }
   	fmt.Println("After the sorting: arr = ",(*arr))
}

func main() {
	//定义数组
    arr := [5]int{55, 22, 66, 99, 11}
    //sort
    BubbleSort(&arr)
    
    fmt.Println("main arr=",arr)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值