Giter Site home page Giter Site logo

hunterhug / goa.c Goto Github PK

View Code? Open in Web Editor NEW
917.0 15.0 188.0 17.99 MB

📚 数据结构和算法(Golang实现)

Home Page: https://hunterhug.gitlab.io/goa.c

License: Apache License 2.0

Dockerfile 0.15% Go 80.64% C++ 9.26% Shell 0.26% HTML 2.73% JavaScript 6.97%
algorithms-and-data-structures golang-study golang-algorithm algorithms algorithm golang

goa.c's Introduction

数据结构和算法(Golang实现)

GitHub stars GitHub last commit GitHub issues License

心灵一问:在面试中,你是否对面试官喋喋不休,反复问你关于快速排序,红黑树的各种细节问题而感到无奈,在工作多年后,已经在工程实践中岁月蹉跎的你,想重拾数据结构和算法的回忆,不妨读读这本书。

盛年不重来,一日难再晨,及时当勉励,岁月不待人。

简单总结:作者通过几个基础的章节教大家入门 Golang 编程语言,然后开始介绍计算机科学与技术中基本的方法论,如分治法,递归和算法复杂度,紧接着从基本数据结构开始,慢慢介绍到排序算法和查找算法。

前言

数据结构和算法在计算机科学里,有非常重要的地位。此系列文章尝试使用 Golang 编程语言来实现各种数据结构和算法,并且适当进行算法分析。

系列文章首发于:

(🧍‍♂️原始文档托管)Github 代码仓库: https://github.com/hunterhug/goa.c

(🤔一直保持最新)Docsify 风格的网站: https://hunterhug.gitlab.io/goa.c

目前有部分网站,未经许可分发了此系列内容,存在更新延后的风险,之前存在部分的笔误,都已经更正了,请以此网站为准!

本地离线阅读,执行:

docker run --name algorithm -d -p 12346:3000 hunterhug/algorithm:docsify

浏览器打开 http://127.0.0.1:12346

联系作者: https://github.com/hunterhug ,邮箱: [email protected]

目录

作者寄语

学而不思则罔,思而不学则殆。

意思是说,学习之后如果不做自己的思考,那么会很迷罔,没有收获,成为一个工具人,但是如果你天天思考,而不学习,那么你就会很疑惑,因为你不知道你是对的还是错的,你需要去向其他人学习,去吸收其他人已经留存的知识。

学习离不开思考,思考也不能脱离学习,二者相辅相成,缺一不可,这是学习的最基本方法。

一起参与

如何建议和贡献自己的知识库,可以前往 https://github.com/hunterhug/goa.c 的仓库提 PR 和 建议。

开源书籍的评论使用的是 GitTalk,可以打开 https://hunterhug.gitlab.io/goa.c 阅读后评论自己的心得。

章节代码

所有章节的代码可以在 Github 仓库根目录下的 https://github.com/hunterhug/goa.c/tree/master/code 文件夹中找到。

赞助作者

如果你想赞助作者买根辣条,可以打开微信扫描下方的二维码:

/weixin.png

赞助情况(排名不分先后):

日期 组织/个人 说明
2023.09.14 长江 6.66 RMB
2023.08.22 无名 6.66 RMB
2023.04.15 min 6.66 RMB
2022.09.18 放下 66.66 RMB
2022.07.22 Perry 6.66 RMB
2022.07.21 九久捌 0.50 RMB
2022.05.07 牛肉拌面. 4.50 RMB
2022.04.21 cy 4.50 RMB
2022.04.13 cy 1.50 RMB
2022.04.02 skywalker 9.50 RMB
2022.03.13 小桀 4.50 RMB
2022.03.02 古寒飞 9.50 RMB
2022.02.08 罗博贤 9.50 RMB
2022.01.21 匿名 1.50 RMB
2021.11.11 peter锦锋 18.50 RMB
2021.09.18 古寒飞 200.00 RMB
2021.08.31 crypto ivil 9.50 RMB
2021.08.19 礼服黑面侠 9.50 RMB
2020.09.22 胡小东 9.50 RMB
2020.06.27 杨某 99.99 RMB

感谢她(他)们给作者送去温暖,让作者有更好的动力边吃辣条边写文章!

广告位招租

广告位招租板块。

开源项目

特别推荐

推荐中华书籍阅读:红楼梦西游记水浒传三国演义史记

版权所有

本开源书籍分发使用 Apache License,您可以随意传阅,但请保留以下声明:

Copyright [2019-2022] [github.com/hunterhug]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

goa.c's People

Contributors

azwc avatar baici1 avatar dazhenga avatar feng99 avatar frankxjkuang avatar honkkki avatar hunterhug avatar jjuu avatar kchou94 avatar kiritoabc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

goa.c's Issues

大佬,你的每个excample我都去敲代码了,非常棒!不过链表的那个例子出了些问题

package main

import (
	"fmt"
)

type LinkNode struct {
	Data     int64
	NextNode *LinkNode
}

func main() {
	// 新的节点
	node := new(LinkNode)
	node.Data = 2
	// 新的节点
	node1 := new(LinkNode)
	node1.Data = 3
	node.NextNode = node1 // node1 链接到 node 节点上
	// 新的节点
	node2 := new(LinkNode)
	node2.Data = 4
	node1.NextNode = node2 // node2 链接到 node1 节点上
	// 按顺序打印数据
	nowNode := node
	for nowNode != nil {

		// 打印节点值
		fmt.Println(nowNode.Data)
		// 获取下一个节点
		nowNode = nowNode.NextNode

	}
	// 如果下一个节点为空,表示链表结束了

}

这样才会输出

2
3
4

简单入门golang-结构体和方法

“内置的数据类型切片 slice 和字典 map 都是引用类型,不需要任何额外操作,所以传递这两种类型作为函数参数,是比较危险的,开发的时候需要谨慎操作。”

这个地方貌似表达有问题,只有map在传参的时候是传地址,其他都是值拷贝,包括slice

勘误说明

由于我写文章之前都是先实现代码,然后代码有时候很长,要调试。

所以写文章的时候分析代码片段,有些细节就没考虑到,如果发现哪里不理解,或者细节不够,欢迎大家补充文档,比如将代码片段进一步拆细,或者可以补充一些知识如附录,说明,小故事,历史,以及图片啥的都可以(有些图我自己手画的)。

我很乐意合并大家的PR。

帮助更多人既学习Golang,又学习数据结构,是比介绍编程语言本身更有价值。

欢迎大家勘误。

工程应用实例

https://github.com/hunterhug/gocache/blob/master/README_ZH.md

该库使用了红黑树和最小堆数据结构。利用最小堆堆顶是最老的值,从而快速清洗过期值。可以认为是一个有过期时间的 K-V 本地内存数据库。

原理很简单:

一个 treeMap 用来保存 K-V,一个最小堆的完全树用来清洗过期 key。
官方的 map 不会缩容,treemap 的话不会占用多余空间。
开了个定时器惰性删除过期key,由于定时器每秒最多清除30个过期,可能不够实时,所以当客户端主动拿值时会进行实时删除key,参考的redis。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.