{"id":13670359,"url":"https://github.com/liuyubobobo/Play-with-Algorithms","last_synced_at":"2025-04-27T09:32:40.250Z","repository":{"id":45715054,"uuid":"62659210","full_name":"liuyubobobo/Play-with-Algorithms","owner":"liuyubobobo","description":"Codes of my MOOC Course \u003cPlay with Algorithms\u003e, Both in C++ and Java language. Updated contents and practices are also included. 我在慕课网上的课程《算法与数据结构》示例代码，包括C++和Java版本。课程的更多更新内容及辅助练习也将逐步添加进这个代码仓。","archived":false,"fork":false,"pushed_at":"2021-12-12T18:48:29.000Z","size":112003,"stargazers_count":3669,"open_issues_count":0,"forks_count":1470,"subscribers_count":256,"default_branch":"master","last_synced_at":"2024-10-29T17:57:26.363Z","etag":null,"topics":["algorithms","imooc","mooc"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liuyubobobo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-05T18:16:22.000Z","updated_at":"2024-10-27T10:00:30.000Z","dependencies_parsed_at":"2022-08-26T04:10:07.434Z","dependency_job_id":null,"html_url":"https://github.com/liuyubobobo/Play-with-Algorithms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liuyubobobo%2FPlay-with-Algorithms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liuyubobobo%2FPlay-with-Algorithms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liuyubobobo%2FPlay-with-Algorithms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liuyubobobo%2FPlay-with-Algorithms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liuyubobobo","download_url":"https://codeload.github.com/liuyubobobo/Play-with-Algorithms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224067120,"owners_count":17250111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","imooc","mooc"],"created_at":"2024-08-02T09:00:39.934Z","updated_at":"2024-11-11T07:31:27.259Z","avatar_url":"https://github.com/liuyubobobo.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"## 算法与数据结构 - 课程官方代码仓\n\n大家好， 欢迎大家来到我在[慕课网](http://www.imooc.com/)上的实战课程[《算法与数据结构精解》](http://coding.imooc.com/class/71.html)的官方代码仓。这个代码仓将不仅仅包含课程的所有源代码，还将发布课程的更新相关内容，勘误信息以及计划的更多可以丰富课程的内容，如更多分享，多多练习，等等等等。课程源码暂时只提供C++和Java两种语言的源代码。关于更多语言的支持，今后有时间，我会慢慢更新这个代码仓（不过预计会是蜗牛速了\u003e_\u003c）。\n\n大家可以下载、运行、测试、修改。如果你发现了任何bug，或者对课程中的任何内容有意见或建议，欢迎和我联系：）\n\n**个人网站**：[liuyubobobo.com](http://liuyubobobo.com) [废弃重整中...]\n\n**电子邮件**：[liuyubobobo@gmail.com](mailto:liuyubobobo@gmail.com)\n\n**微博**: [刘宇波bobo http://weibo.com/liuyubobobo](http://weibo.com/liuyubobobo)\n\n**知乎**: [刘宇波 http://www.zhihu.com/people/liuyubobobo](http://www.zhihu.com/people/liuyubobobo)\n\n**知乎专栏：**[是不是很酷 https://zhuanlan.zhihu.com/liuyubobobo](https://zhuanlan.zhihu.com/liuyubobobo)\n\n**个人公众号：是不是很酷**：）\n\n![QRCode](src/qrcode.png)\n\n## 课程更新信息\n\n* **v2.0** 全套课程配备Java代码（包含已有C++代码的补充内容）。具体参见[课程源码目录](https://github.com/liuyubobobo/Play-with-Algorithms#课程源码目录)的Java代码部分。\n\n* **v1.1** 全套课程配备补充内容\n\n    * 注：补充代码具体参见[课程源码目录](https://github.com/liuyubobobo/Play-with-Algorithms#课程源码目录)每一章的后续部分。**并非所有补充内容都包含源码**。补充内容本身不是课程学习的必须部分。仅供大家扩展思路参考使用。\n    \n    * 关于补充内容，对于课程整体学习，可以忽略。**建议先完成课程必要部分学习，再酌情研究补充内容**。\n    \n    * 对于没有源码的补充内容，我会不定期更新代码，但不保证时间。很多内容是我想到的内容，放在目录里，供大家拓展思路使用。大家也可以自行编写代码练习完成补充内容，相信是很好的编程锻炼：）大家加油！\n    \n* **v 1.0** 全套课程上线\n\n## 课程相关其他代码仓\n\n* [**《玩转算法面试》课程**](https://coding.imooc.com/class/82.html), 代码仓: [Play-with-Algorithm-Interview](https://github.com/liuyubobobo/Play-with-Algorithm-Interview)\n\n* [**《看得见的算法》课程**](https://coding.imooc.com/class/138.html), 代码仓: [Play-with-Algorithm-Visualization](https://github.com/liuyubobobo/Play-with-Algorithm-Visualization)\n\n* [**《玩转数据结构》课程**](https://coding.imooc.com/class/207.html), 代码仓: [Play-with-Data-Structures](https://github.com/liuyubobobo/Play-with-Data-Structures)\n\n* 我的**LeetCode题解代码仓**：[Play Leetcode](https://github.com/liuyubobobo/Play-Leetcode) （注：以C++实现为主）\n\n* **LeetCode Explore题解代码仓**：[Play Leetcode Explore](https://github.com/liuyubobobo/Play-Leetcode-Explore) （注：以C++实现为主）\n    * [Leetcode Explore](https://leetcode.com/explore/) 是 Leetcode 在2017年底上线的新模块，分门别类地整理了Leetcode上的问题。如果刷Leetcode一时不知从哪里下手，可以从Leetcode Explore为指引开始：）\n\n## 更多推荐\n\n* 感谢学习课程的大佬 [**@ShiveryMoon**](https://github.com/ShiveryMoon) 同学使用Python语言实现了课程的所有代码，甚至还有不少拓展和补充。有使用Python语言的同学，可以去大佬的代码仓观望。传送门：[https://github.com/ShiveryMoon/Imooc-Algorithm-PythonEdition](https://github.com/ShiveryMoon/Imooc-Algorithm-PythonEdition)\n\n* 感谢学习课程的大佬 [**@田小号**](https://github.com/tianxiaohao1) 基于Canvas实现的诸多算法的可视化。有兴趣的同学可以去大佬的代码仓围观。同时，[**@田小号**](https://github.com/tianxiaohao1) 还基于Canvas实现了我的《玩转数据结构》和《看得见的算法》两门课程中诸多算法和数据结构的可视化内容，大家不要错过！\n\n    代码仓传送门：[**https://github.com/tianxiaohao1/codding.cn/tree/master/algo**](https://github.com/tianxiaohao1/codding.cn/tree/master/algo)\n    \n![sort-vis](src/fy.jpg)\n\n## 课程源码目录 \n\n| **第一章 当我们谈论算法的时候，我们在谈论什么？** | [无代码] | | \n| :--- | :---: | :---: |\n| 1-1 我们究竟为什么要学习算法 | [无代码] | |\n| 1-2 课程介绍 | [无代码] | |\n| **第二章 排序基础** | [章节C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(C%2B%2B)) | [章节Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(Java)) |\n| 2-1 选择排序 - Selection Sort | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(C%2B%2B)/01-Selection-Sort)| [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(Java)/01-Selection-Sort/src/bobo/algo) |\n| 2-2 使用模板（泛型）编写算法 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(C%2B%2B)/02-Selection-Sort-Using-Template)| [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(Java)/02-Selection-Sort-Using-Comparable/src/bobo/algo) |\n| 2-3 随机生成算法测试用例 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(C%2B%2B)/03-Selection-Sort-Generate-Test-Cases)| [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/blob/master/02-Sorting-Basic/Course%20Code%20(Java)/03-Selection-Sort-Generate-Test-Cases/src/bobo/algo/SortTestHelper.java) |\n| 2-4 测试算法的性能 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(C%2B%2B)/04-Selection-Sort-Detect-Performance)| [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(Java)/04-Selection-Sort-Detect-Performance/src/bobo/algo) |\n| 2-5 插入排序法 - Insertion Sort | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(C%2B%2B)/05-Insertion-Sort)| [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(Java)/05-Insertion-Sort/src/bobo/algo) |\n| 2-6 插入排序法的改进 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(C%2B%2B)/06-Insertion-Sort-Advance)| [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(Java)/06-Insertion-Sort-Advance/src/bobo/algo) |\n| 2-7 更多关于O(n^2)排序算法的思考 | [无代码]|  |\n| 本章课程最终代码 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(C%2B%2B)/Chapter-02-Completed-Code) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(Java)/Chapter-02-Completed-Code/src/bobo/algo) |\n| 补充1 选择排序算法的优化 | [C++源码](02-Sorting-Basic/Course%20Code%20(C%2B%2B)/Optional-01-Optimized-Selection-Sort/) | [Java源码](02-Sorting-Basic/Course%20Code%20(Java)/Optional-01-Optimized-Selection-Sort/src/bobo/algo/) |\n| 补充2 冒泡排序法 - Bubble Sort | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(C%2B%2B)/Optional-02-Bubble-Sort)| [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(Java)/Optional-02-Bubble-Sort/src/bobo/algo) |\n| 补充3 希尔排序法 - Shell Sort | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(C%2B%2B)/Optional-03-Shell-Sort)| [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/02-Sorting-Basic/Course%20Code%20(Java)/Optional-03-Shell-Sort/src/bobo/algo) |\n| 补充4 选择排序算法可视化 (Java) | [看得见的算法](http://coding.imooc.com/class/138.html) | [第四章1，2小节](http://coding.imooc.com/lesson/138.html#mid=7082) |\n| 补充5 插入排序算法可视化 (Java) | [看得见的算法](http://coding.imooc.com/class/138.html) | [第四章3，4小节](http://coding.imooc.com/lesson/138.html#mid=7084) |\n| **第三章 高级排序算法** | [章节C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)) | [章节Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)) |\n| 3-1 归并排序法 - Merge Sort | [无代码] | |\n| 3-2 归并排序法的实现 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/02-Merge-Sort) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/02-Merge-Sort/src/bobo/algo) |\n| 3-3 归并排序法的优化 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/03-Merge-Sort-Advance) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/03-Merge-Sort-Advance/src/bobo/algo) |\n| 3-4 自底向上的归并排序算法 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/04-Merge-Sort-Bottom-Up) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/04-Merge-Sort-Bottom-Up/src/bobo/algo) |\n| 3-5 快速排序法 - Quick Sort | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/05-Quick-Sort) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/05-Quick-Sort/src/bobo/algo) |\n| 3-6 随机化快速排序法 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/06-Quick-Sort-Deal-With-Nearly-Ordered-Array) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/06-Quick-Sort-Deal-With-Nearly-Ordered-Array/src/bobo/algo) |\n| 3-7 双路快速排序法 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/07-Quick-Sort-Deal-With-Identical-Keys) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/07-Quick-Sort-Deal-With-Identical-Keys/src/bobo/algo) |\n| 3-8 三路快速排序法 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/08-Quick-Sort-Three-Ways) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/08-Quick-Sort-Three-Ways/src/bobo/algo) |\n| 3-9 归并排序和快速排序的衍生问题 | [无代码] |  |\n| 本章课程最终代码 | [C++源码]() | [Java源码]() |\n| 补充1 归并排序的另外一个优化，在merge外申请aux空间 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/Optional-01-MergeSort-Create-aux-Array-Out-of-Merge) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/Optional-01-Merge-Sort-Create-aux-Array-Out-of-Merge/src/bobo/algo) |\n| 补充2 自顶向下和自底向上的归并排序的比较 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/Optional-02-MergeSort-and-MergeSortBU-Perfermance-Comparison) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/Optional-02-MergeSort-and-MergeSortBU-Performance-Comparison/src/bobo/algo) |\n| 补充3 ShellSort, MergeSort 和 QuickSort 的比较| [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/Optional-03-ShellSort-MergeSort-and-QuickSort-Comparision) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/Optional-03-ShellSort-MergeSort-and-QuickSort-Comparison/src/bobo/algo) |\n| 补充4 归并排序算法可视化 (Java) | [看得见的算法](http://coding.imooc.com/class/138.html) | [第四章5，6小节](http://coding.imooc.com/lesson/138.html#mid=7086) |\n| 补充5 快速排序算法可视化 (Java) | [看得见的算法](http://coding.imooc.com/class/138.html) | [第四章7-10小节](http://coding.imooc.com/lesson/138.html#mid=7088) |\n| 补充6 归并排序思路求逆序数 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/Optional-04-Inversion-Number) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/Optional-04-Inversion-Number/src/bobo/algo) |\n| 补充7 求任意数组第k小（大）的值 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/Optional-05-Selection) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/03-Sorting-Advance/Course%20Code%20(Java)/Optional-05-Selection/src/bobo/algo) |\n| 补充8 对链表的O(nlogn)级别的排序 | [整理中] | [敬请期待] |\n| 补充9 更多归并排序优化思想的实验 | [整理中] | [敬请期待] |\n| 补充10 更多快速排序优化思想的实验 | [整理中] | [敬请期待] |\n| **第四章 堆和堆排序** | [章节C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)) | [章节Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)) |\n| 4-1 为什么使用堆 | [无代码] | |\n| 4-2 堆的基本存储 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/02-Max-Heap-Class-Basic) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/02-Max-Heap-Class-Basic/src/bobo/algo) |\n| 4-3 Shift Up | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/03-Shift-Up) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/03-Shift-Up/src/bobo/algo) |\n| 4-4 Shift Down | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/04-Shift-Down) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/04-Shift-Down/src/bobo/algo) |\n| 4-5 基础堆排序和Heapify | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/05-Heapify) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/05-Heapify/src/bobo/algo) |\n| 4-6 优化的堆排序 - Heap Sort | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/06-Heap-Sort) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/06-Heap-Sort/src/bobo/algo) |\n| 4-7 排序算法总结 | [无代码] | |\n| 4-8 索引堆 - Index Heap | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/08-Index-Heap) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/08-Index-Heap/src/bobo/algo) |\n| 4-9 索引堆的优化 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/09-Index-Heap-Advance) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/09-Index-Heap-Advance/src/bobo/algo) |\n| 4-10 和堆相关的其他问题 | [无代码] | |\n| 本章课程最终代码 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/Chapter-04-Completed-Code) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/Chapter-04-Completed-Code/src/bobo/algo) |\n| 补充1 优化的Shift Up和Shift Down | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/Optional-1-Optimized-Shift-Up-and-Shift-Down) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/Optional-1-Optimized-Shift-Up-and-Shift-Down/src/bobo/algo) |\n| 补充2 最小堆 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/Optional-2-Min-Heap) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/Optional-2-Min-Heap/src/bobo/algo) |\n| 补充3 最小索引堆 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(C%2B%2B)/Optional-3-Index-Min-Heap) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/04-Heap/Course%20Code%20(Java)/Optional-3-Index-Min-Heap/src/bobo/algo) |\n| 补充4 从0开始索引的最大堆和最小堆 | [玩转数据结构](https://coding.imooc.com/class/207.html) | [第八章](https://coding.imooc.com/lesson/207.html#mid=13738) |\n| 补充5 从0开始索引的最大索引堆和最小索引堆 | [整理中] | [敬请期待] |\n| 补充6 堆排序可视化 (Java) | [看得见的算法](http://coding.imooc.com/class/138.html) | [第四章第11小节](http://coding.imooc.com/lesson/138.html#mid=7092) |\n| 补充7 可以空间动态扩展的堆结构 | [玩转数据结构](https://coding.imooc.com/class/207.html) | [第八章](https://coding.imooc.com/lesson/207.html#mid=13738) |\n| 补充8 N个元素中的前M大(或小)元素 | [玩转数据结构](https://coding.imooc.com/class/207.html) | [第八章 7，8小节](https://coding.imooc.com/lesson/207.html#mid=13744) |\n| 补充9 基于索引的选择排序 | [C++源码](04-Heap/Course%20Code%20(C%2B%2B)/Optional-9-Indexed-Selection-Sorting/) | [敬请期待] |\n| **第五章 二分搜索树** | [章节C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)) | [章节Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)) |\n| 5-1 二分查找法（Binary Search）| [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/01-Binary-Search) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/01-Binary-Search/src/bobo/algo) |\n| 5-2 二分搜索树基础（Binary Search Tree）| [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/02-Binary-Search-Tree-Basics) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/02-Binary-Search-Tree-Basics/src/bobo/algo) |\n| 5-3 二分搜索树的节点插入 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/03-Binary-Search-Tree-Insert) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/03-Binary-Search-Tree-Insert/src/bobo/algo) |\n| 5-4 二分搜索树的查找 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/04-Binary-Search-Tree-Search) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/04-Binary-Search-Tree-Search/src/bobo/algo) |\n| 5-5 二分搜索树的遍历（深度优先遍历） | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/05-Binary-Search-Tree-Traverse) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/05-Binary-Search-Tree-Traverse/src/bobo/algo) |\n| 5-6 层序遍历（广度优先遍历） | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/06-Binary-Search-Tree-Level-Traverse) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/06-Binary-Search-Tree-Level-Traverse/src/bobo/algo) |\n| 5-7 删除最大值，最小值 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/07-Binary-Search-Tree-Remove-Min-and-Max) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/07-Binary-Search-Tree-Remove-Min-and-Max/src/bobo/algo) |\n| 5-8 二分搜索树节点的删除（Hubbard Deletion） | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/08-Binary-Search-Tree-Remove) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/08-Binary-Search-Tree-Remove/src/bobo/algo) |\n| 5-9 二分搜索树的顺序性 | [无代码] | |\n| 5-10 二分搜索树的局限性 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/10-The-Disadvantages-of-Binary-Search-Tree-and-More-Trees) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/10-The-Disadvantages-of-Binary-Search-Tree-and-More-Trees/src/bobo/algo) |\n| 5-11 树形问题和更多树 | [无代码] | |\n| 本章课程最终代码 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/Chapter-05-Completed-Code) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/Chapter-05-Completed-Code/src/bobo/algo) |\n| 补充1 二分查找法改变变量定义，论如何写出正确算法 | [玩转算法面试](http://coding.imooc.com/class/82.html) | [第三章1，2小节](http://coding.imooc.com/lesson/82.html#mid=2656) |\n| 补充2 二分搜索法的floor和ceil | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/Optional-02-Floor-and-Ceil-in-Binary-Search) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/Optional-02-Floor-and-Ceil-in-Binary-Search/src/bobo/algo/) |\n| 补充3 二分搜索法的lower bound和upper bound | [C++源码](05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/Optional-03-Lower-Bound-and-Upper-Bound-in-Binary-Search/) | [Java源码](05-Binary-Search-Tree/Course%20Code%20(Java)/Optional-03-Lower-Bound-and-Upper-Bound-in-Binary-Search/src/) |\n| 补充4 二分搜索的总结 | [C++源码](05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/Optional-04-More-about-Binary-Search/) | [Java源码](05-Binary-Search-Tree/Course%20Code%20(Java)/Optional-04-More-about-Binary-Search/src/) |\n| 补充5 二分搜索树中的floor和ceil | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/Optional-05-Floor-and-Ceil-in-BST/) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/Optional-05-Floor-and-Ceil-in-BST/src/bobo/algo/) |\n| 补充6 二分搜索树中的前驱和后继 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/Optional-06-Predecessor-and-Successor-in-BST/) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/05-Binary-Search-Tree/Course%20Code%20(Java)/Optional-06-Predecessor-and-Successor-in-BST/src/bobo/algo/) |\n| 补充7 二分搜索树中的rank和select | [整理中] | [敬请期待] |\n| 补充8 二分搜索树前中后序非递归遍历\u003cbr/\u003e深入理解非递归和递归的区别，以及非递归和栈的关系 | [玩转算法面试](http://coding.imooc.com/class/82.html) | [第六章2，3小节](http://coding.imooc.com/lesson/82.html#mid=2675) |\n| 补充9 二叉树前中后序遍历的经典非递归实现 | [C++](05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/Optional-09-Binary-Tree-Classic-Nonrecursive-Traversal/) | [Java](05-Binary-Search-Tree/Course%20Code%20(Java)/Optional-09-Binary-Tree-Classic-Nonrecursive-Traversal/) |\n| 补充10 二叉树的Morris前中后序遍历 | [C++](05-Binary-Search-Tree/Course%20Code%20(C%2B%2B)/Optional-10-Binary-Tree-Morris-Traversal/) | [Java](05-Binary-Search-Tree/Course%20Code%20(Java)/Optional-10-Binary-Tree-Morris-Traversal/src/) |\n| 补充11 二分搜索树整体的非递归实现 | [整理中] | [敬请期待] |\n| 补充12 二分搜索树的另一个应用：Tree Set | [玩转数据结构](https://coding.imooc.com/class/207.html) | [第六章，第七章](https://coding.imooc.com/lesson/207.html#mid=13454) |\n| 补充13 允许重复键值的二分搜索树：Multi Tree Set / Map | [整理中] | [敬请期待] |\n| 补充14 更多二分搜索树（或者二叉树）相关的面试问题 | [玩转算法面试](http://coding.imooc.com/class/82.html) | [第七章](http://coding.imooc.com/lesson/82.html#mid=2681) |\n| 补充15 二叉树的公共祖先 (LCA) | [整理中] | [敬请期待] |\n| 补充16 树形问题和回溯法 | [玩转算法面试](http://coding.imooc.com/class/82.html) | [第八章](http://coding.imooc.com/lesson/82.html#mid=2687) |\n| 补充17 树形问题之八皇后问题 | [玩转算法面试](http://coding.imooc.com/class/82.html#Anchor) | [第八章第8小节](http://coding.imooc.com/lesson/82.html#mid=2695) |\n| 补充18 走迷宫 (Java) | [看得见的算法](http://coding.imooc.com/class/138.html) | [第五章](http://coding.imooc.com/lesson/138.html#mid=7064) |\n| 补充19 树形问题之 Move the Box 求解 (Java) | [看得见的算法](http://coding.imooc.com/class/138.html) | [第八章](http://coding.imooc.com/lesson/138.html#mid=7440) |\n| 补充20 线段树 (区间树) | [玩转数据结构](https://coding.imooc.com/class/207.html) | [第九章](https://coding.imooc.com/lesson/207.html#mid=13843) |\n| 补充21 Trie | [玩转数据结构](https://coding.imooc.com/class/207.html) | [第十章](https://coding.imooc.com/lesson/207.html#mid=13850) |\n| 补充22 KD树 | [整理中] | [敬请期待] |\n| 补充23 哈夫曼树 | [整理中] | [敬请期待] |\n| 补充24 使用哈夫曼树进行文件压缩 | [整理中] | [敬请期待] |\n| 补充25 AVL树 | [玩转数据结构](https://coding.imooc.com/class/207.html) | [第十二章](https://coding.imooc.com/lesson/207.html#mid=14346) |\n| 补充26 红黑树 | [玩转数据结构](https://coding.imooc.com/class/207.html) | [第十三章] |\n| 补充27 伸展树 | [整理中] | [敬请期待] |\n| 补充28 B类树 | [玩转数据结构](https://coding.imooc.com/class/207.html) | [第十六章] |\n| 补充29 Treap | [整理中] | [敬请期待] |\n| 补充30 树形问题之数独求解 | [整理中] | [敬请期待] |\n| 补充31 数独求解之特殊数据结构 | [整理中] | [敬请期待] |\n| 补充32 树形问题之八数码问题 (A*算法初步) | [整理中] | [敬请期待] |\n| 补充33 树形问题之推箱子自动求解 | [整理中] | [敬请期待] |\n| **第六章 并查集** | [章节C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(C%2B%2B)) | [章节Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(Java)) |\n| 6-1 并查集基础（Union Find）| [无代码] |  |\n| 6-2 Quick Find | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(C%2B%2B)/02-Quick-Find) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(Java)/02-Quick-Find/src/bobo/algo) |\n| 6-3 Quick Union | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(C%2B%2B)/03-Quick-Union) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(Java)/03-Quick-Union/src/bobo/algo) |\n| 6-4 基于size的优化 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(C%2B%2B)/04-Optimize-by-Size) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(Java)/04-Optimize-by-Size/src/bobo/algo) |\n| 6-5 基于rank的优化 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(C%2B%2B)/05-Optimize-by-Rank) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(Java)/05-Optimize-by-Rank/src/bobo/algo) |\n| 6-6 路径压缩（Path Compression）| [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(C%2B%2B)/06-Path-Compression) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(Java)/06-Path-Compression/src/bobo/algo) |\n| 本章课程最终代码 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(C%2B%2B)/Chapter-06-Completed-Code) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(Java)/Chapter-06-Completed-Code/src/bobo/algo) |\n| 补充1 使用相同的测试用例测试不同的UF实现 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(C%2B%2B)/Optional-01-Same-Cases-Test-for-UF) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(Java)/Optional-01-Same-Cases-Test-for-UF/src/bobo/algo) |\n| 补充2 迭代和递归实现两种路径压缩的区别 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(C%2B%2B)/Optional-02-Path-Compression-Comparison) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/06-Union-Find/Course%20Code%20(Java)/Optional-02-Path-Compression-Comparison/src/bobo/algo) |\n| **第七章 图的基础** | [章节C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(C%2B%2B)) | [章节Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(Java)) |\n| 7-1 图论基础 | [无代码] |  |\n| 7-2 图的表示 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(C%2B%2B)/02-Graph-Representation) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(Java)/02-Graph-Representation/src/bobo/algo) |\n| 7-3 相邻节点迭代器 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(C%2B%2B)/03-Vertex%20Adjacent%20Iterator) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(Java)/03-Vertex-Adjacent-Iterator/src/bobo/algo) |\n| 7-4 图的算法框架 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(C%2B%2B)/04-Read-Graph) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(Java)/04-Read-Graph/src/bobo/algo) |\n| 7-5 深度优先遍历和联通分量 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(C%2B%2B)/05-DFS-and-Components) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(Java)/05-DFS-and-Components/src/bobo/algo) |\n| 7-6 寻路 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(C%2B%2B)/06-Finding-a-Path) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(Java)/06-Finding-a-Path/src/bobo/algo) |\n| 7-7 广度优先遍历和无权图的最短路径 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(C%2B%2B)/07-BFS-and-Shortest-Path) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(Java)/07-BFS-and-Shortest-Path/src/bobo/algo) |\n| 7-8 迷宫生成，PS抠图 —— 更多无权图的应用 | [无代码] |  |\n| 本章课程最终代码 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(C%2B%2B)/Chapter-07-Completed-Code) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(Java)/Chapter-07-Completed-Code/src/bobo/algo) |\n| 补充1 Floodfill算法练习题 | [玩转算法面试](http://coding.imooc.com/class/82.html#Anchor) | [第八章第7小节](http://coding.imooc.com/lesson/82.html#mid=2694) |\n| 补充2 Floodfill算法可视化 (Java) | [整理中] | [敬请期待] |\n| 补充3 扫雷游戏模型 | [看得见的算法](http://coding.imooc.com/class/138.html) | [第七章](http://coding.imooc.com/lesson/138.html#mid=7266) |\n| 补充4 随机迷宫生成 | [看得见的算法](http://coding.imooc.com/class/138.html) | [第六章](http://coding.imooc.com/lesson/138.html#mid=7073) |\n| 补充5 欧拉路径 | [整理中] | [敬请期待] |\n| 补充6 哈密尔顿路径 | [整理中] | [敬请期待] |\n| 补充7 Blue Path 自动求解 | [整理中] | [敬请期待] |\n| 补充8 地图填色问题 | [整理中] | [敬请期待] |\n| 补充9 二分图和二分图的最有匹配 | [整理中] | [敬请期待] |\n| 补充10 墙为线条的迷宫生成 | [整理中] | [敬请期待] |\n| 补充11 六边形的迷宫生成 | [整理中] | [敬请期待] |\n| 补充12 TSP问题 | [整理中] | [敬请期待] |\n| 补充13 TSP问题之遗传算法初步 | [整理中] | [敬请期待] |\n| **第八章 最小生成树** | [章节C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(C%2B%2B)) | [章节Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(Java)) |\n| 8-1 有权图 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(C%2B%2B)/01-Weighted-Graph) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(Java)/01-Weighted-Graph) |\n| 8-2 最小生成树问题和切分定理 | [无代码] | |\n| 8-3 Prim算法的第一个实现 (Lazy Prim) | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(C%2B%2B)/03-Lazy-Prim) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(Java)/03-Lazy-Prim/src/bobo/algo) |\n| 8-4 Prim算法的优化 | [无代码] | |\n| 8-5 优化后的Prim算法的实现 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(C%2B%2B)/05-Implementation-of-Optimized-Prim-Algorithm) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(Java)/05-Implementation-of-Optimized-Prim-Algorithm/src/bobo/algo) |\n| 8-6 Kruskal算法 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(C%2B%2B)/06-Kruskal-Algorithm) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(Java)/06-Kruskal-Algorithm/src/bobo/algo) |\n| 8-7 最小生成树算法的思考 | [无代码] | |\n| 本章课程最终代码 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(C%2B%2B)/Chapter-08-Completed-Code) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/08-Minimum-Span-Trees/Course%20Code%20(Java)/Chapter-08-Completed-Code/src/bobo/algo) |\n| 补充1 Prim算法可视化 (Java) | [整理中] | [敬请期待] |\n| 补充2 Kruskal算法可视化 (Java) | [整理中] | [敬请期待] |\n| 补充3 图的最小生成树的个数 | [整理中] | [敬请期待] |\n| 补充4 Vyssotsky Algorithm | [整理中] | [敬请期待] |\n| **第九章 最短路径** | [章节C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/09-Shortest-Path/Course%20Code%20(C%2B%2B)) | [章节Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/09-Shortest-Path/Course%20Code%20(Java)) |\n| 9-1 最短路径问题和松弛操作(Relaxation) | [无代码] | |\n| 9-2 Dijkstra的算法思想 | [无代码] | |\n| 9-3 实现Dijkstra算法 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/09-Shortest-Path/Course%20Code%20(C%2B%2B)/03-Implementation-of-Dijkstra) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/09-Shortest-Path/Course%20Code%20(Java)/03-Implementation-of-Dijkstra) |\n| 9-4 负权边和Bellman-Ford算法 | [无代码] | |\n| 9-5 实现Bellman-Ford算法 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/09-Shortest-Path/Course%20Code%20(C%2B%2B)/05-Implementation-of-Bellman-Ford) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/09-Shortest-Path/Course%20Code%20(Java)/05-Implementation-of-Bellman-Ford) |\n| 9-6 更多和最短路径相关的思考 | [无代码] | |\n| 本章课程最终代码 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/09-Shortest-Path/Course%20Code%20(C%2B%2B)/Chapter-09-Completed-Code) | [Java源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/09-Shortest-Path/Course%20Code%20(Java)/Chapter-09-Completed-Code) |\n| 补充1 基于最小堆的 Dijkstra 实现 | [C++源码](https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/09-Shortest-Path/Course%20Code%20(C%2B%2B)/Optional-1-Dijkstra-based-on-Min-Heap/) | [敬请期待] |\n| 补充2 SPFA算法 | [整理中] | [敬请期待] |\n| 补充3 有向无环图（DAG）的拓扑排序 | [整理中] | [敬请期待] |\n| 补充4 Floyed算法 | [整理中] | [敬请期待] |\n| 补充5 使用Bellman-Ford求最长路径 | [整理中] | [敬请期待] |\n| 补充6 使用拓扑排序求有向无环图（DAG）的最长路径 | [整理中] | [敬请期待] |\n| 补充7 使用Floyed算法求所有对的最长路径 | [整理中] | [敬请期待] |\n| **第十章 结束语** | [无代码] | |\n| 10-1 总结：算法思想，大家加油！ | [无代码] | |\n\n---\n\n注： **课程讲义的PDF版本不在github上提供**，大家可以在慕课网上 \"下载 -\u003e 查看讲师源码\" 中各个章节文件夹下找到。\n\n**大家加油！：）**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliuyubobobo%2FPlay-with-Algorithms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliuyubobobo%2FPlay-with-Algorithms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliuyubobobo%2FPlay-with-Algorithms/lists"}