go 实现冒泡排序和插入排序

冒泡排序:一次冒泡过程,只能把一个元素放到正确位置。实现:相邻的两个元素比较一下,如果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-i-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 协议》,转载必须注明作者和本文链接
用过哪些工具?为啥用这个工具(速度快,支持高并发...)?底层如何实现的?
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!