什么是算法?
算法是模型分析的一组可行的、确定的和有穷的规则。
从计算机程序设计的角度看,算法由一系列求解问题的指令构成,能够根据规范的输入,在有限的时间内获得有效的输出结果。算法代表了用系统的方法来描述解决问题的一种策略机制。
算法的5个特征:
1、有穷性
算法的指令或者步骤的执行次数是有限的,执行时间也是有限的。
2、确切性
算法的每一个指令或者步骤都必须有明确的定义和描述。
3、输入
有相应的输入条件,用来刻画运算对象的初始情况。
4、输出
有明确的输出结果。
5、可行性
算法的执行步骤必须是可行的,切可以在有限的时间内完成。
算法分类
1、按照应用来分类
按照算法的应用领域,也就是解决的问题,算法可以分为基本算法、数据结构相关的算法、几何算法、图论算法、规划算法、数值分析算法、加密/解密算法、排序算法、查找算法、并行算法和数论算法等
2、按照确定性来分类
按照算法的结果的确定性来分类,可以分为确定性算法和非确定性算法。
- 确定性算法:在有限的时间内完成计算,得到的结果是唯一的,切经常取决与输入值
- 非确定性算法:在有限的时间内完成计算,但得到的结果往往不是唯一的,也就是存在多值性
3、按照算法的思路来分类,算法可以分为递推算法、递归算法、穷举算法、贪婪算法、分治算法、动态规划算法和迭代算法等多种。
算法与数据结构、程序的关系
程序设计语言是算法实现的一种形式,也就是一种工具。
数据结构是数据的组织形式,可以用来表征特定的对象数据。因为不同的数据结构所采用的处理方法不同,计算的复杂度也不同,所以算法往往是依赖于某种数据结构的。数据结构是算法实现的基础。
可得如下公式:
数据结构+算法+程序设计语言=程序