go 實現氣泡排序和插入排序

littlexiaoshuishui發表於2020-06-10

氣泡排序:一次冒泡過程,只能把一個元素放到正確位置。實現:相鄰的兩個元素比較一下,如果s[i]>s[i+1],替換位置。
最多需要冒泡n次;

func Buble(s []int) {
    l := len(s)
    if l < 2{
        return
    }
    for i:=0; i<l; i++{
        flag := true
        for j:=0; j<l-1; j++ {
            if s[j]>s[j+1] {
                s[j],s[j+1] = s[j+1],s[j]
                flag = false
            }
        }
        if flag {
            break
        }
    }
    return
}

插入排序:就是把資料分成兩部分,左邊部分為排序好的,右邊部分為未排序的。每次從右邊取出一個元素s[j],和左邊排序好的元素依次比較。然後合適的地方插入。

func InsertSort(s []int) {
    len := len(s)
    if len < 2 {
        return
    }
    for i:=1; i<len; i++{
        j := i-1
        value := s[i]
        for ; j>=0; j--{
            if s[j] > value {
                s[j+1] = s[j] //右移一位
            }else{
                break //只能跳出一層
            }
        }
        s[j+1] = value
    }
    return
}

go迴圈中,break只能跳出一層迴圈。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章