• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

练习:使用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()
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go学习笔记-函数发布时间:2022-07-10
下一篇:
Go语言net/http包的简单使用发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap