算法:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法五特性:
输入 | 算法具有零个或多个输入 |
输出 | 算法至少有一个或多个输入 |
有穷性 | 算法在执行有限步骤后自动结束,不会出现无限循环 |
确定性 | 算法的每一步都有确定的含义 |
可行性 | 算法的每一步都是可行的 |
算法的要求:
正确性 |
算法至少具有输入、输出和加工处理无歧义性、能够正确反映问题的需求、能够得到问题的正确答案。1.算法程序没有语法错误 2.算法对合法输入可以产生正确答案 3.算法对非法输入的说明处理 4.算法对刁难的测试数据都有满足输出的结果。 |
可读性 | 便于阅读、理解和交流 |
健壮性 | 当输入非法数据时,算法也能够做出相应的反应,而不是莫名奇妙的结果。 |
时间效率与空间效率 | 应满足时间效率高和存储量低的需求 |
算法效率的度量方法:
事后估计法:利用计算机测试运行算法的速度。
事前估算法:在计算机程序编制前,依据统计方法对算法进行估算。
常见时间复杂度:
最坏时间复杂度:在最不理想,运气最坏的时候,执行这段代码的时间复杂度。
平均时间复杂度:它把每种情况下的复杂度加起来,然后除以情况的个数,所得的值就是平均复杂度,类似于数学上的均值。
算法空间复杂度:通过计算完成某一算法需要占用的空间大小而实现。