zoukankan      html  css  js  c++  java
  • go算法练习

    冒泡排序:

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

    选择排序:

    package main
    
    import(
        "fmt"
    )
    
    //38, 1, 4, 5, 10
    //1, 38, 4, 5, 10
    //1, 4, 38, 5, 10
    //选择排序
    func select_sort(a []int) {
        for i := 0; i < len(a)-1; i++ {
            for j := i+1; j < len(a);j++ {
                if a[j] < a[i] {
                    a[j], a[i] = a[i], a[j]
                }
            }
        }
    }
    
    func main() {
        a := []int{38, 1, 4, 5, 10}
        select_sort(a)
        fmt.Println(a)
    }


    插入排序:

    package main
    
    import(
        "fmt"
    )
    
    
    //38, 1, 4, 5, 10
    //38
    //1, 38, 
    //1, 4, 38,
    //1, 4, 5, 38,
    //1, 4, 5, 10, 38
    //插入排序
    func insert_sort(a []int) {
        for i := 1; i < len(a); i++ {
            for j := i;j > 0;j-- {
                if a[j] < a[j-1] {
                    a[j], a[j-1] = a[j-1], a[j]
                } else {
                    break
                }
            }
        }
    }
    
    func main() {
        a := []int{38, 1, 4, 5, 10}    
        insert_sort(a)
        fmt.Println(a)
    }


    快速排序:

    package main
    
    import(
        "fmt"
    )
    
    //50, 100, 4, 5, 10, 50
    //10, 100, 4, 5, 38, 50
    //10, 38, 4, 5, 100, 50
    //10, 4, 38, 5, 100, 50
    //10, 4, 5, 38, 100, 50
    //5, 4, 10,
    //4, 5, 10, 38, 
    func partion(a []int, left, right int) int {
        var i = left
        var j = right
        for i < j {
            for j > i && a[j] > a[left] {
                j--
            }
            a[j], a[left] = a[left], a[j]
            for i < j && a[i] < a[left] {
                i++
            }
            a[left], a[i] = a[i], a[left]
            fmt.Println(i)
        }
        return i
    }
    
    func qsort(a []int, left, right int) {
        if left >= right {
            return
        }
    
        mid := partion(a, left, right)
        qsort(a, left, mid-1)
        qsort(a, mid+1, right)
    }
    
    func main() {
        a := []int{38, 1, 4, 5, 10}
        qsort(a, 0, len(a)-1)
        fmt.Println(a)
    }
  • 相关阅读:
    程序员修炼之道——从小工到专家 读书笔记
    Spring5 IOC原理
    2021下期末总结
    十年风雨,一个普通程序员的成长之路(五) 成长:得到与教训
    UmbracoXslDevelopmentTemplate CQ
    Asp.net中的数据绑定 CQ
    Building the DotNetNuke Module in Normal Asp.net Application CQ
    UmbracoDataTypeFirstGlance CQ
    Umbraco Home CQ
    UmbracoColor Picker–Demo CQ
  • 原文地址:https://www.cnblogs.com/domestique/p/8228263.html
Copyright © 2011-2022 走看看