大话数据结构笔记(二)算法
1.算法(Algorithm):解决特定问题求解步骤的描述,计算机中为指令的有限序列,每条指令表示一个或多个操作。222
2.算法的五个基本特性:输入,输出,有穷性,确定性和可行性。
2.1 输入输出:输入可以为0个参数,输出至少一个。
2.2 有穷性:在相对可接受的时间内可以自动结束。
2.3 确定性:算法的每一步都是确定唯一的。
2.4 可行性:每一步可通过执行有限次步骤完成。
算法设计的要求:正确性(大部分用数学方法进行证明)标准:对于非法输入数据能够得出满足规格说明的结构。
可读性,健壮性(对不合法的输入可以做出相关处理),时间效率高和存储量少。
问题输入规模,输入量的多少。
3 函数的渐进增长:输入规模n在没有限制的情况下,只要超过一个数值N,这个函数就总大于另一个函数。
判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,更应该关注主项(最高阶项)的阶数。
事前估算方法的理论依据:某个算法随着n的增大,会越来越优于另一算法,或越来越差于另一算法。
4.算法时间复杂度:T(n)-语句执行的次数,n-问题规模,由n的变化分析T(n)的数量级。算法的时间复杂度(算法时间量度)T(n)=O(f(n)),
随着n的增大,算法执行时间的增长率和f(n)的增长率相同。
推导大O阶:
1>用1替换运行时间中的所有加法常数
2>只保留最高阶
3>如果最高项存在且不是1,则去除与这个项相乘的常数得到的结构就是大O阶。
5 单纯的分支结构时间复杂度也是O(1)。
6 循环的时间复杂度等于循环体的复杂度乘以该循环的运行次数。
7 常用的时间复杂度所耗费的时间从小到大:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
8 运行时间——最坏情况的运行时间,平均运行时间-期望的运行时间
9 复杂度包括时间算法复杂度(运行时间的需求)和空间复杂度(空间需求)。
2017-10-1615:58:04