黑马教学视频——Java程序算法设计

算法概要

算法是用于计算、数据处理和自动推理使用的。算法主要是做精确计算和表示一个有限长列的有效方法。算法一般包含清晰定义的指令用于计算函数。基本上也属于一种思考最简洁的方式。

算法特征

算法主要包含五个特征

2.1、有穷性;

是指算法必须能在执行有限个步骤后终止;

2.2、确切性;

算法的每一个步骤必须有确切的定义;

2.3、输入项;

一个算法输入有0或多个输入,以刻画预算对象的初始情况,所谓0就是初始化条件;

2.4、输出项;

反馈对数据加工后的结果。没有输出的算法无意义。

2.5、可行性;

算法中执行的任何计算都可以分步骤进行,每个步骤并在有限时间内完成。


算法常用的设计模式

主要有十个设计模式

3.1、完全遍历法

在验证一个问题集合时,且以验证正确性和最优性的时候,就会采用完全遍历法。但在便利的过程中就会消耗大量的内存。

3.2、不完全遍历法

当便利时占用的内存空间特别庞大时,可以使用不完全遍历法来实现。例如各种规则算法和搜索算法即是。

3.3、分治法

把一个问题分区成互相独立的部分,分别求解。分治法的好处在于可以并行计算。

分治法所能解决的问题一般具有以下几个特征:

(1) 该问题的规模缩小到一定的程度就可以容易地解决;

(2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;

(3) 利用该问题分解出的子问题的解可以合并为该问题的解;

(4) 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。

3.4、动态规划法

当问题整体的最优解是由局部最优解组成的时候,会经常采用这种规划方法。用于求解包含重叠子问题的最优化问题的方法。

3.5、贪婪算法(也叫贪心算法)

常见的近似求解思路。当问题的整体最优解不是(或无法证明是)由局部最优解组成,且对解的最优性没有要求的时候,可以采用的一种方法。

3.6、线性规则法

问题是目标函数和约束条件都是线性的最优化

3.7、简并法

把一个问题通过逻辑或数学推理,简化成与之等价或者近似的、相对简单的模型,进而求解的方法。

3.8、穷举法

穷举法,或称为暴力破解法,其基本思路是:对于要解决的问题,列举出它的所有可能的情况,逐个判断有哪些是符合问题所要求的条件,从而得到问题的解。它也常用于对于密码的破译。?

3.9、分枝界限法

分枝界限法是一个用途十分广泛的算法,运用这种算法的技巧性很强,不同类型的问题解法也各不相同。分支定界法的基本思想是对有约束条件的最优化问题的所有可行解(数目有限)空间进行搜索?

3.10、回溯法

运用这种算法的技巧性很强,不同类型的问题解法也各不相同。分支定界法的基本思想是对有约束条件的最优化问题的所有可行解(数目有限)空间进行搜索。

本次课程部分截图

递归算法和备忘录算法实现裴波那契数列

黑马教学视频——Java程序算法设计_第1张图片

动态规划算法实现裴波那契数列

黑马教学视频——Java程序算法设计_第2张图片

【黑马程序员上海中心】公众号回复【Java算法】即可领取哟

有其他需求可加学姐微信,你想要的,学姐都有

推荐阅读:学姐VX:CZBKSH

什么时候投递简历成功率最高?这是一个细致活!

程序员注意了,北京西二旗程序员因为这个被捕了

Chrome强大的15款插件,第2款简直是大学生的福音

2018年新版Java学习路线图(内含大纲+视频+工具+书籍+面试)

2018年最新Python学习路线图(内含大纲+视频+工具)

2018版Go语言+区块链学习路线图(含大纲+视频+工具+资料)

2018新版前端与移动开发学习路线图(视频+工具+书籍+资源)


黑马教学视频——Java程序算法设计_第3张图片

你可能感兴趣的:(黑马教学视频——Java程序算法设计)