本算法笔记采用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版本。
- 《算法》第4版:经典书籍,最好的算法书籍之一,Java编写
- 《数据结构》(邓俊辉):数据结构的集大成者,深入浅出
- 《趣学算法》:覆盖了市面大部分算法
- 《算法设计与分析基础》
- 《数据结构与算法分析》-C语言描述:数据结构与算法进阶的巨匠,也拥有Java版本:传送门
- 《算法新解》:大量复杂数据结构的深入,难度较大
- 《算法导论》:算法领域的代表作
- 《计算机程序设计艺术》:恢弘巨作,算法领域的里程碑
- 《程序员代码面试指南》:面试指南之一
- 《剑指offer》:面试指南之一
- 《编程珠玑》:为算法提供了精辟的解题思路,是算法**学习的瑰宝
- 《编程之美》:微软面试指南集合
OverNote全系列地址:https://github.com/overnote
欢迎关注up主:https://github.com/ruyuejun
OverNote分类: