本文档是《数据结构与算法之美》的学习笔记和个人编写的python实现的相关代码。
在线阅读地址:https://datastructure.xiaoxiaoming.xyz/
原作者最后出的思考题均有相应的解答和python代码实现。
例如原题为:
我们今天学的几个复杂度分析方法,你都掌握了吗?你可以用今天学习的知识,来分析一下下面这个 add() 函数的时间复杂度。
// 全局变量,大小为 10 的数组 array,长度 len,下标 i。
int array[] = new int[10];
int len = 10;
int i = 0;
// 往数组中添加一个元素
void add(int element) {
if (i >= len) { // 数组空间不够了
// 重新申请一个 2 倍大小的数组空间
int new_array[] = new int[len*2];
// 把原来 array 数组中的数据依次 copy 到 new_array
for (int j = 0; j < len; ++j) {
new_array[j] = array[j];
}
// new_array 复制给 array,array 现在大小就是 2 倍 len 了
array = new_array;
len = 2 * len;
}
// 将 element 放到下标为 i 的位置,下标 i 加一
array[i] = element;
++i;
}本人解答为:
课程中提到的 JVM 的标记清除垃圾回收算法等问题本笔记有详细的图文解说。
课程中相应的案例基本都有优质的python代码实现。
若你有什么更好的建议,欢迎提交pull或issue进行反馈,每篇文档本身也支持评论,评论后我都可以在issue或原文档页面看到。
我还没有更新的地方基本都是原课程的内容,对于原课程内容整个转录过程纯手打,公式挨个修正调试,图片挨个插入,已经粗略校对2遍,可能仍存在一些公式显示错误,若发现异常欢迎反馈,当然后期也会因为我的学习进度而被完整更新为笔记。
目前已经更新到链表,持续更新中...
本文档与原课程的目录会有点差别,本人进行了一些合并和重新编号,新排版的目录为:
-
入门篇
-
基础篇
-
高级篇
-
实战篇

