算法设计与分析,实战玩转算法7个经典应用诠释算法精髓
看的见的算法7个经典应用诠释算法精髓
采用基础的Java语言,通过7款经典好玩的游戏,bobo老师带你进入不一样的算法世界,体验算法在实际开发中的应用,真正把算法用起来!
第1章欢迎来到看得见的算法
欢迎来到看得见的算法。这个课程将以独一无二的方式,向你展示算法究竟有什么用,在实际项目中能做什么,并向你一一展示通过学习这个课程,你将能够制作出多么酷炫的程序:)
1-1欢迎来到看得见的算法
1-2学习这个课程将完成什么项目?
1-3关于本课程的编程环境
1-4更多学习本课程的注意事项
第2章要想看得见,先要搞定GUI编程
在这一章,你将从0开始接触JavaSwing编程,进入GUI的编程世界。通过这一章的学习,你将了解JavaSwing最基本的用法。在这一章的最后,你将能够使用JavaSwing制作简单额动画,并且能够使用键盘鼠标进行交互。
2-1使用JFrame
2-2创建属于自己的第一个JFrame子类
2-3设置画布与图形绘制基础
2-4使用Graphics2D
2-5整理绘制工具类
2-6高级绘制特性:抗锯齿和双缓存
2-7动画基础
2-8算法可视化中的MVC
2-9键盘事件
2-10鼠标事件
2-11课程所使用的GUI编程模板
第3章概率模拟算法
什么是蒙特卡洛算法?如果一个房间有100个人,每一时刻所有人都随机给另外的人一块钱,一定时间以后,房间里人们的财富分配是怎样的?怎么求解PI的近似值?著名的三门问题是怎么回事?游戏里的宝箱,有20%的中奖率,打开5个宝箱就一定能中奖吗?对于这些问题,在这一章将统统给你答案!…
3-1一个有意思的分钱模拟问题
3-2深入随机分钱问题
3-3蒙特卡洛算法
3-4使用蒙特卡洛算法求PI值
3-5不需要可视化的蒙特卡洛模拟
3-6三门问题
3-7你一定能中奖吗?
第4章排序算法可视化
有没有见过网上酷炫的排序过程动画?在这一章,我们将带领你制作选择排序,插入排序,归并排序,快速排序和堆排序的动画。通过这些动画,我们将更深入的理解这些排序算法的优劣,以及相应的优化思路:)
4-1选择排序算法可视化.
4-2为可视化添加更多效果
4-3插入排序可视化.
4-4在近乎有序的数据上测试插入排序算法.
4-5通过归并排序算法深入理解递归
4-6归并排序算法可视化.
4-7快速排序算法可视化
4-8在快速排序中随机选取标定点
4-9双路快速排序算法可视化
4-10三路快速排序算法可视化
4-11堆排序算法可视化
第5章走迷宫
走迷宫是一个经典问题。这一章将针对这个经典问题进行详细分析,最终完成一个可视化的计算机自动在迷宫中寻找正确路径的动画应用。通过这个动画的制作,我们还将深入分析深度优先遍历和广度优先遍历,发现这二者之间最为重要的联系。…
5-1处理迷宫文件
5-2迷宫可视化
5-3迷宫问题和图的遍历
5-4深度优先递归走迷宫
5-5迷宫问题与回溯法
5-6非递归深度优先走迷宫
5-7非递归深度优先走迷宫求解最终路径
5-8广度优先走迷宫问题
5-9深度优先遍历和广度优先遍历的内在联系
第6章随机迷宫生成
RPG游戏中的迷宫都是如何随机生成的?在这一章,我们将探索一种随机迷宫的生成算法,并且完成一个从无到获得完整酷炫迷宫的动画过程。通过学习这个算法,我们也将领悟,如何在深入理解经典算法的基础上,改进算法,制作个性化的数据结构,来完成不一样的目标。…
6-1什么是迷宫
6-2生成迷宫基础
6-3深度优先遍历生成迷宫
6-4非递归深度优先遍历生成迷宫
6-5广度优先遍历生成迷宫
6-6随机队列生成迷宫
6-7迷宫生成的迷雾效果
6-8生成随机性更强的迷宫
6-9更多迷宫问题
第7章自己做一个扫雷游戏
虽然游戏引擎越来越发达,但并非所有的游戏都能够通过拖拖拽拽来完成。扫雷就是一个例子。通过这章的学习,我们将探索制作扫雷这个游戏背后的算法,让大家认识到算法无处不在。即使是一个简单的扫雷,如果不会算法,还真实现不出来呢:)…
7-1扫雷是什么鬼?扫雷里包含什么算法?
7-2扫雷代码基础
7-3随机生成雷区
7-4验证随机生成雷区算法的随机性
7-5Fisher-Yates洗牌算法的应用
7-6为扫雷程序加入交互
7-7扫雷与floodfill算法
7-8更多扫雷相关和floodfill算法的应用
第8章益智游戏自动生成解–MovetheBox
喜欢益智游戏,但是脑细胞不够用?让我们编程来自动求解一个益智游戏吧!通过这个过程,我们也将初步接触经典人工智能的核心思想——搜索。希望学完了本章课程,你不仅能够学会自动求解MovetheBox这个游戏,还能够自己写出求解其他益智游戏的自动化算法。分分钟掌握黑科技!…
8-1玩一玩MovetheBox
8-2求解MovetheBox的数据架构
8-3求解MovetheBox的渲染
8-4搜索框架
8-5处理箱子掉落过程
8-6处理箱子消除过程
8-7显示问题的解
8-8更多搜索优化思路
8-9更多人工智能相关
第9章分形图的绘制:计算机生成艺术
计算机算法不仅仅可以用于计算求解,还可以用于艺术领域!分形艺术便是其中之一。在这一章中,我们将学习形形色色的分形图的绘制方法,用代码生成绚丽的图案,帮助你实现艺术家的梦想!
9-1分形到底是什么鬼
9-2递归绘制基础
9-3Vicsek分形图的绘制
9-4为分形绘制添加交互
9-5Sierpinski分形绘制
9-6Sierpinski三角形
9-7Koch雪花分形背后的数学分析
9-8编写Koch雪花分形
9-9利用分形绘制树
第10章看得见的算法,下季再见!
准备这个选题的时候,我列出了可以讲解的20余种应用,之后挑选了难度适中且具有代表性的7个形成了现在的课程。算法的用处其实还多着呢。
算法设计与分析,实战玩转算法7个经典应用诠释算法精髓
1、自动:在上方保障服务中标有自动发货的虚拟商品,拍下后,将会自动收到来自卖家的商品,在订单详情中查看卡密/或下载链接;
2、手动:未标有自动发货的的商品,拍下后,卖家会收到邮件、短信提醒,买家可通过QQ/电话的方式联系商家发货。
1、描述:商品描述(含标题)与实际商品不一致的(例:描述充值的QQ会员一年,实际只充值了一个月或充值其他QQ钻等);
2、演示:有演示站时,与实际商品小于95%一致的(但描述中有"不保证完全一样、有变化的可能性"类似显著声明的除外);
3、发货:手动发货商品,在卖家未发货前,已申请退款的;
4、服务:卖家不提供安装服务或需额外收费的(但描述中有显著声明的除外);
5、其他:如质量方面的硬性常规问题等。
注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。交易中的商品,卖家无法对描述进行修改!
1、在未拍下前,双方在QQ上所商定的内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准);
2、在商品同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外);
3、在没有"无任何正当退款依据"的前提下,写有"一旦售出,概不支持退款"等类似的声明,视为无效声明;
4、虽然交易产生纠纷的几率很小,但请尽量保留如聊天记录这样的重要信息,以防产生纠纷时便于我司工作人员介入快速处理。