/over-algorithm

算法笔记:[进度40%]数据结构与算法Go语言描述,附C、JS版本

Primary LanguageGoMIT LicenseMIT

笔记说明

本算法笔记采用Go语言描述,同时内部引用了Go的一些专有函数,如append(),这样做屏蔽了很多底层数据元素的操作细节,但是快速实现了数据结构,适合解题与实际应用,不是学院派风格。

源码中并未采取面向接口、继承等**来实现工具方法的复用,尤其是在二叉搜索树、红黑树等章节,每个章节都具备自己独立的代码。因为笔者认为这些笔记是用来学习数据结构的,而不是用来学习面向对象**的,过渡抽象会给初学者造成困惑。笔者的意愿是:学习者拿到每个数据结构,都可以做到信手拈来,直接使用,而不是还要查询其继承结构。

笔者使用Go语言记录数据结构与算法笔记的原因:

  • C:非面向对象,笔者认为不适合快速学习,会耗费一定的时间在内存管理之上
  • C++:拥有面向对象功能,但是同样需要进行内存管理,会耗费一定的时间在此之上
  • js/py:脚本语言写法变换太多,且很多结构在底层与大多语言结构特性不符,比如js的数组其实是哈希表
  • java:具备面向对象,且语法严谨规范,适合学习与教学,但是市面上Java相关的数据结构教程层出不穷,已经做得很好了
  • go:与Java一样严谨,完备,且语法上更加简洁,市面上很好的go算法书籍、教程极少

Go语法极简,读者即使不具备Go语言基础也能看懂代码,如果对Go语言有兴趣,也可以查看笔者的Golang笔记进行详细学习。

源码食用指南:

为了便于初学者、非Golang语言开发者方便阅读源码,每份源码提供了极简的单元测试案例,直接运行即可。

当然为了能够详细了解底层操作信息,笔者在sources文件夹也提供了C语言版本,严格按照学院派风格(如严蔚敏版)对数据结构、算法进行描述,适合学习考研。
同时笔记也将提供JavaScript作为动态语言版本的示例学习数据结构与算法,未来可能考虑引入C++、Python、Java版本。

数据结构与算法书籍

1.1 入门书籍

1.2 基础书籍

1.3 算法加强

1.4 算法进阶

1.5 算法题

1.6 算法设计

算法资料

  • 力扣:著名的算法题网站
  • 牛客网:面向基础与面试的算法题库

附录:笔记汇总

OverNote全系列地址:https://github.com/overnote

欢迎关注up主:https://github.com/ruyuejun

OverNote分类

  • Go笔记:详尽的Go领域笔记:Go语法、Go并发编程、GoWeb编程、Go微服务等
  • 大前端:包含JavaScript、Node.js、vue/react、微信开发、Flutter等大前端技术
  • 数据结构与算法:以Go实现的数据结构与算法的笔记,附C,JavaScript版本
  • 分布式与微服务架构:分布式与微服务等架构笔记,附mysql、redis、nginx、docker、k8s等笔记
  • Linux:计算机组成原理、操作系统、计算机网络、编译原理基础学科笔记
  • 大数据:大数据笔记,完善中
  • Python:Python相关笔记,完善中