算法图解的算法代码示例,用Python和Java实现,后期会加入其它语言。
也欢迎用其它语言来实现,那就在好不过了。
领读人:张旱文
本书特色
- 你渴望像看喜欢的小说一样学习算法吗?如果是,这本书正是你梦寐以求的!
- 算法学习起来一点都不乏味!这本书既活泼有趣又富有洞见。
- 这本书完成了一项不可能完成的任务:让数学变得有趣而易懂!
适合读者
- 业余程序员、编程培训班学员、需要重温算法的计算机专业毕业生、对编程感兴趣的物理或数学等专业毕业生。
答疑时间安排
- 每周一次,周六晚上8点到10点
欢迎读者们来图灵读者小密圈打卡、贴图、发疑问
总跨度
- 一个月
每天阅读用时
- 2小时(建议多做练习)
读前须知
-
我会将书中的算法用Python和Java两种语言实现。(Python是书中使用的语言),也欢迎用其它语言来实现,那就更好了。
-
方便记录我们的练习,我在github创建了一个仓库,大家可以把每天的练习进行PR。(要保证程序是AC的才行哦),这样才有参考的价值,大家可以对不同的实现来进行讨论。
-
目录我已创建完成。这里为了方便记录和区分。大家在PR的时候,建议文件命名规则为:作者姓名英文缩写+文件名。在chapter1中已有示例。
-
在练习的过程中,我也会找一些书中相关的算法题目,让大家一起来练习。
一、第一部分(1-7章)
阅读时长:1-2 周
重点部分
1. 二分查找(掌握) 以最常见的例子查电话簿引入第一个算法,可以明显感觉到使用不同的算法,带来的性能上和时间上的提升。
2. 大O表示法(掌握) 为了能够比较各种算法之间的运行时间,要有一个可以衡量的点。
3. 内存的工作原理 (理解)
4. 数组和链表 (理解)
5. 选择排序 (掌握)
6. 快速排序(掌握)
难点部分
1. 递归(掌握)
2. 散列表(掌握)
3. 图(理解并掌握)
二、第二部分(8-11章)
阅读时长:3-4 周
重点部分
1. 贪婪算法 (背包问题)(理解掌握)
2. 动态规划(理解掌握)
3. K最近邻算法(理解掌握)
难点部分(理解)
1. 树
2. 傅里叶变换
3. 并行算法
4. MapReduce
5. 反向索引
6. 布隆过滤器
7. SHA算法
8. 局部敏感的散列算法
9. Diffie-Hellman密钥交换
10. 线性交换
其他建议
-
第一部分内容计划是两个星期以内要完成,看的快的同学可能一个星期就完成了,这里大家可以自己安排。
-
第二部分内容计划在剩余的时间内完成。最重要的是大家一定要自己将算法写出来并能运行,才会有更多的收获。