TypeScript 语言实现的算法集。
第一期目标:实现《算法导论》中的全部算法。
- 下载并安装 node.js;
- 全局安装 TypeScript:
npm i -g typescript
; - 全局安装 ts-node:
npm i -g ts-node
; - 下载本项目:
git clone https://github.com/linzier/algo-ts.git
; - 进入项目根目录并安装依赖:
cd $proj_dir && npm i
; - 运行某个算法的单元测试:
npm run test test/sort/insert-sort.test.ts
; - 或者运行所有的单元测试:
npm run test:all
; - 单元测试覆盖率:
npm run cover
;
- src 目录:存放源码,视情况划分二级目录;
- test 目录:单元测试目录,目录结构同 src;
- 为了让不太熟悉 TypeScript 的同学也能容易看懂算法实现代码,本项目在代码编写上尽量不使用复杂的语法(如大部分时候直接使用基本数据类型,而不是泛型),让大家在阅读代码时将注意力集中在算法实现本身,而不是语言特定语法中;
- 注释:为便于阅读,代码尽可能包含详尽的注释。一般一个文件就是一个特定算法实现,在该文件顶部会包含一段注释,说明算法名称、说明、算法实现思路。另外大部分函数以及函数内部也都会包含详细的注释说明算法实现逻辑;
- 目录与索引:
- 每个算法都需要加入到下方索引中,方便检阅;
- 一个算法可能属于多个索引分类,如归并算法同时属于“排序”和“分治算法”;
- 一般情况下,src 下的目录和索引是对应的,不过对于可归入多个索引分类的算法,在 src 下放入到其中一个目录即可。另外一些不好划分目录的直接放在 src 一级目录下;
相关算法和数据结构持续更新中,欢迎参与。