首页 > 编程语言 > 详细

一文学会Go - 2 数据结构与算法实践篇

时间:2019-11-12 20:13:43      阅读:87      评论:0      收藏:0      [点我收藏+]

练习:使用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 []int) []int {
    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 []int) (result []int) {
    l, r := 0, 0
    for l < len(left) && r < len(right) {
        if left[l] < right[r] {
            result = append(result, left[l])
            l++
        } else {
            result = append(result, right[r])
            r++
        }
    }
    result = append(result, left[l:]...)
    result = append(result, right[r:]...)
    return
}

测试代码

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()
}

 

一文学会Go - 2 数据结构与算法实践篇

原文:https://www.cnblogs.com/mignet/p/Go_learning_All_in_one_2.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!