1.2.1 算法的基本概念
1. 什么是算法:
程序 = 数据结构 + 算法。
**数据结构**:把现实世界的问题信息化,将信息存入计算机,同时还要实现对数据结构的基本操作。
**算法**:如何处理这些信息,以解决实际问题。
2. 算法的特性:
1)有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。**(算法必须是有穷的,但程序可以是无穷的)**
2)确定性:算法中每条指令都必须要有明确的含义,对于相同的输入必须只能得到相同的输出。
3)可行性:算法中描述的操作都可以通过**已经实现的基本运算**执行有限次来实现。
4)输入:一个算法有零个或多个输入。
5)输出:同上。 类似与:y = f(x)
3. “好算法”的特质:
1)正确性:算法应能够正确地解决求解的问题。
2)可读性:算法应具有良好的可读性,方便人们理解。(算法可以用伪代码甚至文字描述,关键在于可以“无歧义”地描述出解决问题的步骤)
3)健壮性:输入非法数据时,算法应能够适当地做出反应或者进行处理,而不会产生莫名其妙或者无法预测的输出结果。
4)高效率和低存储需求:前者指的是执行速度快,时间复杂度低;后者则指的是不费内存,空间复杂度低。