zoukankan      html  css  js  c++  java
  • Golang之排序算法

    冒泡排序

    package main
    
    //冒泡排序
    import "fmt"
    
    func bsort(a []int) {
        for i := 0; i < len(a); i++ {
            for j := 1; j < len(a)-i; j++ {
                if a[j] < a[j-1] {
                    a[j], a[j-1] = a[j-1], a[j]
                }
            }
        }
    }
    func main() {
        b := [...]int{8, 7, 5, 4, 3, 10, 15}
        bsort(b[:])
        fmt.Println(b)
    }

    选择排序

    package main
    
    import "fmt"
    
    //冒泡排序
    
    func ssort(a []int) {
        for i := 0; i < len(a); i++ {
            var min int = i
            for j := i + 1; j < len(a); j++ {
                if a[min] > a[j] {
                    min = j
                }
            }
            a[i], a[min] = a[min], a[i]
    
        }
    }
    
    func main() {
        b := [...]int{8, 7, 5, 4, 3, 10, 15}
        ssort(b[:])
        fmt.Println(b)
    }

    插入排序

    package main
    
    import "fmt"
    
    //冒泡排序
    
    func isort(a []int) {
        for i := 1; i < len(a); i++ {
            for j := i; j > 0; j-- {
                if a[j] > a[j-1] {
                    break
                }
                a[j], a[j-1] = a[j-1], a[j]
            }
        }
    }
    
    func main() {
        b := [...]int{8, 7, 5, 4, 3, 10, 15}
        isort(b[:])
        fmt.Println(b)
    }

    快速排序

    package main
    
    import "fmt"
    
    //快速排序
    
    func qsort(a []int, left, right int) {
        if left >= right {
            return
        }
        val := a[left]
        k := left
        //确定val所在的位置
        for i := left + 1; i <= right; i++ {
            if a[i] < val {
                a[k] = a[i]
                a[i] = a[k+1]
                k++
            }
        }
        a[k] = val
        qsort(a, left, k-1)
        qsort(a, k+1, right)
    }
    func main() {
        b := [...]int{8, 7, 5, 4, 3, 10}
        qsort(b[:], 0, len(b)-1)
        fmt.Println(b)
    }
  • 相关阅读:
    Source Insight技巧收集
    宝贝,祝你生日快乐!
    【转载】C++中的extern C
    Meego
    source insight增加新类型方法
    点操作符和箭头操作符的异同
    【转载】mtk编译命令
    margin和padding的用法与区别以及bug处理方式
    js数组
    随机验证码,颜色同时刷新
  • 原文地址:https://www.cnblogs.com/pyyu/p/8205924.html
Copyright © 2011-2022 走看看