大家好, 欢迎大家来到我在慕课网上的实战课程《看得见的算法(第一季)》的官方代码仓。这个代码仓将不仅仅包含课程的所有源代码,还将发布课程的更新相关内容,勘误信息以及计划的更多可以丰富课程的内容,如更多分享,多多练习,等等等等。课程源码为Java语言源代码。关于更多语言的支持,今后有时间,我会慢慢更新这个代码仓(不过预计会是蜗牛速了>_<)。大家可以下载、运行、测试、修改。如果你发现了任何bug,或者对课程中的任何内容有意见或建议,欢迎和我联系:)
个人网站:liuyubobobo.com [废弃重整中...]
微博: 刘宇波bobo http://weibo.com/liuyubobobo
知乎: 刘宇波 http://www.zhihu.com/people/liuyubobobo
知乎专栏:是不是很酷 https://zhuanlan.zhihu.com/liuyubobobo
个人公众号:是不是很酷:)
-
我的LeetCode题解代码仓:Play Leetcode (注:以C++实现为主)
-
LeetCode Explore题解代码仓:Play Leetcode Explore (注:以C++实现为主)
- Leetcode Explore 是 Leetcode 在2017年底上线的新模块,分门别类地整理了Leetcode上的问题。如果刷Leetcode一时不知从哪里下手,可以从Leetcode Explore为指引开始:)
-
感谢学习课程的大佬 @田小号 基于Canvas实现的迷宫可视化。有兴趣的同学可以去大佬的代码仓围观。同时,@田小号 还基于Canvas实现了我的《修炼算法内功》和《玩转数据结构》两门课程中诸多算法和数据结构的可视化内容,大家不要错过!
代码仓传送门:https://github.com/tianxiaohao1/codding.cn/tree/master/algo
- 如果大家有学习这个课程后受启发,制作出的好的算法可视化的代码仓,也请联系我。免费广告位在此预留:)
第一章 欢迎来到看得见的算法 | Java源码 |
---|---|
1-1 欢迎来到看得见的算法 | [无代码] |
1-2 学习这个课程将完成什么项目? | [无代码] |
1-3 关于本课程的编程环境 | [无代码] |
1-4 更多学习本课程的注意事项 | [无代码] |
第二章 要想看得见,先要搞定GUI编程 | 章节Java代码 |
2-1 使用JFrame | Java |
2-2 创建属于自己的第一个JFrame子类 | Java |
2-3 设置画布与图形绘制基础 | Java |
2-4 使用Graphics2D | Java |
2-5 整理绘制工具类 | Java |
2-6 高级绘制特性:抗锯齿和双缓存 | Java |
2-7 动画基础 | Java |
2-8 算法可视化中的MVC | Java |
2-9 键盘事件 | Java |
2-10 鼠标事件 | Java |
2-11 课程所使用的GUI编程模板 | Java |
第二章完整代码 | Java |
第三章 概率模拟算法 | 章节Java代码 |
3-1 一个有意思的分钱模拟问题 | Java |
3-2 深入随机分钱问题 | Java |
3-3 蒙特卡洛算法 | Java |
3-4 使用蒙特卡洛算法求PI值 | Java |
3-5 不需要可视化的蒙特卡洛模拟 | Java |
3-6 三门问题 | Java |
3-7 你一定能中奖吗? | Java |
第三章完整代码 | Java |
第四章 排序算法可视化 | 章节Java代码 |
4-1 选择排序算法可视化 | Java |
4-2 为可视化添加更多效果 | Java |
4-3 插入排序可视化 | Java |
4-4 在近乎有序的数据上测试插入排序算法 | Java |
4-5 通过归并排序算法深入理解递归 | Java |
4-6 归并排序算法可视化 | Java |
4-7 快速排序算法可视化 | Java |
4-8 在快速排序中随机选取标定点 | Java |
4-9 双路快速排序算法可视化 | Java |
4-10 三路快速排序算法可视化 | Java |
4-11 堆排序算法可视化 | Java |
第四章完整代码 | Java |
第五章 走迷宫 | 章节Java代码 |
5-1 处理迷宫文件 | Java |
5-2 迷宫可视化 | Java |
5-3 迷宫问题和图的遍历 | [无代码] |
5-4 深度优先递归走迷宫 | Java |
5-5 迷宫问题与回溯法 | Java |
5-6 非递归深度优先走迷宫 | Java |
5-7 非递归深度优先走迷宫求解最终路径 | Java |
5-8 广度优先走迷宫问题 | Java |
5-9 深度优先遍历和广度优先遍历的内在联系 | [无代码] |
第五章完整代码 | Java |
第六章 随机迷宫生成 | 章节Java代码 |
6-1 什么是迷宫 | [无代码] |
6-2 生成迷宫基础 | Java |
6-3 深度优先遍历生成迷宫 | Java |
6-4 非递归深度优先遍历生成迷宫 | Java |
6-5 广度优先遍历生成迷宫 | Java |
6-6 随机队列生成迷宫 | Java |
6-7 迷宫生成的迷雾效果 | Java |
6-8 生成随机性更强的迷宫 | Java |
6-9 更多迷宫问题 | [无代码] |
第六章完整代码 | Java |
第七章 自己做一个扫雷游戏 | 章节Java代码 |
7-1 扫雷是什么鬼?扫雷里包含什么算法? | [无代码] |
7-2 扫雷代码基础 | Java |
7-3 随机生成雷区 | Java |
7-4 验证随机生成雷区算法的随机性 | Java |
7-5 Fisher-Yates洗牌算法的应用 | Java |
7-6 为扫雷程序加入交互 | Java |
7-7 扫雷与floodfill算法 | Java |
7-8 更多扫雷相关和floodfill算法的应用 | [无代码] |
第七章完整代码 | Java |
第八章 益智游戏自动生成解 - Move the Box | 章节Java代码 |
8-1 玩一玩Move the Box | [无代码] |
8-2 求解Move the Box的数据架构 | Java |
8-3 求解Move the Box的渲染 | Java |
8-4 搜索框架 | Java |
8-5 处理箱子掉落过程 | Java |
8-6 处理箱子消除过程 | Java |
8-7 显示问题的解 | Java |
8-8 更多搜索优化思路 | [无代码] |
8-9 更多人工智能相关 | [无代码] |
第八章完整代码 | Java |
补充代码1: 求解过程加交互 | Java |
补充代码2: 使用HashSet求解 | Java |
第九章 分形图的绘制:计算机生成艺术 | 章节Java代码 |
9-1 分形到底是什么鬼 | [无代码] |
9-2 递归绘制基础 | Java |
9-3 Vicsek 分形图的绘制 | Java |
9-4 为分形绘制添加交互 | Java |
9-5 Sierpinski 分形绘制 | Java |
9-6 Sierpinski 三角形 | Java |
9-7 Koch雪花分形背后的数学分析 | [无代码] |
9-8 编写Koch雪花分形 | Java |
9-9 利用分形绘制树 | Java |
第九章完整代码 | Java |
补充代码1: 另一种Vicsek分形 | Java |
第十章 看得见的算法,下季再见! | [无代码] |
10-1 看得见的算法,下一季再见! | [无代码] |
-
做这个课程的时候,一气儿设想了20多个demo,用来展示算法的实际运用。本以为是个很好的选题,毕竟大家平时使用算法都过于抽象。如果可能,这个选题可以出好几季,让大家真正做到“看见”这些算法。但是没想到课程推出以后,销量非常差。所以这个课程的后几季的制作计划暂时只能暂停。请谅解。
-
但这个课程本身依然自成体系,是我在慕课网做过的课程中,最喜欢的课程。也相信非常值得大家学习。希望大家喜欢。万一,只是万一,这个课程在以后的时间里突然火起来了,慕课网肯定会联系我做第二季第三季的:)
-
课程讲义的PDF版本不在github上提供,大家可以在慕课网上 "下载 -> 查看讲师源码" 中各个章节文件夹下找到。
-
大家加油!:)