• go练习:数据结构与算法实践篇


    练习:使用go语言实现冒泡排序和归并排序

    冒泡排序是所有排序算法中最简单的,练习时先实现它:

    func bubbleSort(array []int) {
        n := len(array)
        for j := 0; j < n; j++ {
            for i := 0; i < n-1-j; i++ {
                fmt.Println(i, j, n, array[i], array[i+1])
                if array[i] > array[i+1] {
                    array[i], array[i+1] = array[i+1], array[i]
                }
            }
        }
    }

    等语法熟悉之后,可以实现更复杂的算法练习,比如归并排序:

    func mergeSort(array []int64) []int64 {
        n := len(array)
        if n <= 1 {
            return array
        }
        num := n / 2
        left := mergeSort(array[:num])
        right := mergeSort(array[num:])
        return merge(left, right)
    }
    func merge(left, right []int64) (result []int64) {
        size, i, j := len(left)+len(right), 0, 0
        slice := make([]int64, size, size)
    
        for k := 0; k < size; k++ {
            if i > len(left)-1 && j <= len(right)-1 {
                slice[k] = right[j]
                j++
            } else if j > len(right)-1 && i <= len(left)-1 {
                slice[k] = left[i]
                i++
            } else if left[i] < right[j] {
                slice[k] = left[i]
                i++
            } else {
                slice[k] = right[j]
                j++
            }
        }
        return slice
    }

    测试代码

    package main
    
    import "fmt"
    
    func main() {
        src := []int{6, 202, 100, 301, 38, 8, 1}
        for _, e := range src {
            fmt.Print(e, ",")
        }
        fmt.Println()
        for _, e := range mergeSort(src) {
            fmt.Print(e, ",")
        }
        fmt.Println()
    }
  • 相关阅读:
    lamp
    mysql多实例部署
    mysql进阶
    rsync
    mysql基础
    httpd
    ftp
    高级命令之awk
    NFS
    网络进阶管理
  • 原文地址:https://www.cnblogs.com/mignet/p/Go_learning_All_in_one_2.html
Copyright © 2020-2023  润新知