本算法笔记采用Go
语言书写,同时内部引用了Go的一些函数,如append()
,虽然屏蔽了很多底层数据元素的操作细节,但是快速实现了数据结构,适合解题与实际应用,不是学院派风格。
笔者使用Go语言记录数据结构与算法笔记的原因:
- C:非面向对象,笔者认为不适合快速学习,会耗费一定的时间在内存管理之上
- C++:拥有面向对象功能,但是同样需要进行内存管理,会耗费一定的时间在此之上
- js/py:脚本语言写法变换太多,且很多结构在底层与大多语言结构特性不符,比如js的数组其实是哈希表
- java:具备面向对象,且语法严谨规范,适合学习与教学,但是市面上Java相关的数据结构教程层出不穷,已经做得很好了
- go:与Java一样严谨,完备,且语法上更加简洁,市面上很好的go算法书籍、教程极少
Go语法极简,读者即使不具备Go语言基础也能看懂代码,如果对Go语言有兴趣,也可以查看笔者的Golang笔记进行详细学习。
当然为了能够详细了解底层操作信息,笔者在sources文件夹也提供了C
语言版本,严格按照学院派风格(如严蔚敏版)对数据结构、算法进行描述,适合学习考研。
同时笔记也将提供JavaScript
作为动态语言版本的示例学习数据结构与算法,未来可能考虑引入C++、Python、Java版本。
Go版本数据结构与算法以实际应用为准则,基于go mod,环境,笔者建议直接安装go1.13以上版本即可,会默认开启 go mod。食用方式:
cd sources/go
go run main.go // 在 main.go 中打开想要的测试方法即可
C版本数据结构与算法以标准C为主,适合考研党,食用方式:
cd sources/c
cc main.c // 在 main.c 中打开想要的测试方法即可
JavaScript版数据结构与算法实现完全采用ES6、ES Module方式书写,需要编译支持。笔者已经配置好了编译模块,按照下列命令直接食用即可:
# 在sources/js 目录中 贴士:需要提前安装node.js。
npm install
npx babel-node index.js // 在 index.js 中打开想要的测试方法即可
- 《算法》第4版:经典书籍,最好的算法书籍之一,Java编写
- 《数据结构》(邓俊辉):数据结构的集大成者,深入浅出
- 《趣学算法》:覆盖了市面大部分算法
- 《算法设计与分析基础》
- 《数据结构与算法分析》-C语言描述:数据结构与算法进阶的巨匠,也拥有Java版本:传送门
- 《算法新解》:大量复杂数据结构的深入,难度较大
- 《算法导论》:算法领域的代表作
- 《计算机程序设计艺术》:恢弘巨作,算法领域的里程碑
- 《程序员代码面试指南》:面试指南之一
- 《剑指offer》:面试指南之一
- 《编程珠玑》:为算法提供了精辟的解题思路,是算法思想学习的瑰宝
- 《编程之美》:微软面试指南集合
OverNote全系列地址:https://github.com/overnote
欢迎关注up主:https://github.com/ruyuejun
OverNote分类: