本算法笔记采用C&C++
语言、Go
语言、JavaScript
语言同时描述。为了符合考研、工作双重需要,在基础原理部分使用严谨的学院派风格的C/C++
语言描述,再附带上工作中常用的Go
语言、JavaScript
语言来进行简化。
源码中并未采取面向接口、继承等思想来实现工具方法的复用,笔者认为不应该将编程语言的学习成本带入数据结构,笔者的意愿是:学习者拿到每个数据结构,都可以做到信手拈来,直接使用,而不是还要查询其继承、实现结构。
源码文件位于:https://github.com/overnote/over-algorithm/tree/master/sources。
为了便于学习,本笔记附录了 C/C++的基础语法,但是主要是针对考研,故而学院派总结较多,不偏向务实使用。如果需要深入、广泛的学习 C 语言,请阅读《C Primer Plus》、 Brian W. Kernighan 的《C 程序设计语言》,并使用笔记:
最后,笔者认为 Go 语法极简,读者即使不具备 Go 语言基础也能看懂代码,是继 Java、Python 之后,笔者认为比较适合作为学习数据结构实现的语言。如果对 Go、JavaScript 语言有兴趣,也可以查看笔者的笔记进行详细学习:
TODO: 在可期的未来,笔者也会将 Java、Python 部分慢慢追加上。
入门:
基础:
- 《算法精解》
- 《算法》第 4 版:经典书籍,最好的算法书籍之一,Java 编写
- 《数据结构》(邓俊辉):数据结构的集大成者,深入浅出
- 《趣学算法》:覆盖了市面大部分算法
提升:
- 《数据结构与算法分析》-C 语言描述:数据结构与算法进阶的巨匠,也拥有 Java 版本:传送门
- 《算法设计与分析基础》
- 《算法新解》:大量复杂数据结构的深入,难度较大
- 《算法详解(卷 1)——算法基础》:有卷一、卷二两本
成神:
- 《算法导论》:算法领域的代表作
- 《计算机程序设计艺术》:恢弘巨作,算法领域的里程碑
刷题:
- 《程序员面试金典》(第 6 版)
- 《程序员代码面试指南》:面试指南之一
- 《剑指 offer》:面试指南之一
- 《编程珠玑》:为算法提供了精辟的解题思路,是算法思想学习的瑰宝
- 《编程之美》:微软面试指南集合
一些网站:
笔者推荐的学习方式: 如果完全是零基础,建议通过视频来学习,B 站上拥有大量零基础数据结构教学视频,搜索即可。稍微拥有一点基础后,笔者推荐的书籍是:考研使用邓的《数据结构 C++语言描述》,工作面试使用《算法》第 4 版,后续就是做题了。
OverNote全系列地址:https://github.com/overnote
欢迎关注 up 主:https://github.com/ruyuejun
OverNote 分类: