典型算法的5个特征:
- 有穷性:算法的指令或者步骤的执行次数是有限的,执行时间也是有限的
- 确切性:算法的每一个指令或者步骤都必须有明确的定义和描述
- 输入:一个算法需要有一个输入条件,用于刻画运算对象的初始情况
- 输出:一个算法需要一个明确的结果输出
- 可行性:算法的执行步骤必须是可行的,且可以在有限的时间内完成
算法的分类:
1.按照应用来分类(按解决的问题)
分为基本算法、数据结构相关的算法、几何算法、图论算法、规划算法、数值分析算法、加密/解密算法、排序算法、查找算法、并行算法和数论算法等
2.按照确定性分类
- 确定性算法:得到的结果是唯一的,且经常取决于输入值
- 非确定性算法:得到的结果往往不唯一,存在多值性
3.按照算法的思路分类
分为递推算法、递归算法、穷举算法、贪婪算法、分治算法、动态规划算法和迭代算法等
算法相关概念:
- 程序设计语言是算法实现的一种形式,也是一种工具
- 数据结构是算法实现的基础
-
数据结构 + 算法 + 程序设计语言 = 程序
- 这里的数据结构表示的是处理的对象,算法是计算和处理的核心方法,程序设计语言是算法的实现方法
算法的表示:
1.自然语言
2.流程图:
3.N-S图:也称为盒图或者CHAPIN图,去除了流程图中的流程线
4.伪代码:要求描述结构清晰、代码简单、可读性好
算法的性能
1.时间复杂度
2.空间复杂度
- 程序保存所需要的存储空间,即程序的大小
- 程序在执行过程中所需要消耗的存储空间资源,如程序在执行过程中的中间变量