1.数据结构与算法的关系
数据结构:相互之间存在一种或多种特定关系的数据元素的集合
算法:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,每条指令表示一个或多个操作。
应用程序=数据结构+算法
2.算法的定义
算法:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,每条指令表示一个或多个操作。
3.算法的特性
算法有五个基本特性:
1.输入 :算法具有零个或者多个输入
2.输出 :算法至少有一个或多个输出
3.有穷性:执行有限步骤后自动结束,不会出现死循环,并且每个步骤在可接受时间内完成
4.确定性:每个步骤都具有确定的含义,不会出现二义性
5.可行性:每个步骤都是可行的,每一步都能通过执行有限次数完成
4.算法设计的要求
1.正确性:输入输出和加工处理无歧义性,能正确反映问题的需求,并得到问题的正确答案。
无语法错误、可以接受合法和不合法的输入和精选刁难的测试数据。
2.可读性:算法设计的另一目的是为了便于阅读、理解和交流。
3.健壮性:当输入的数据不合法时,算法能够做出相应处理,而不是产生异常或莫名奇妙的结果。
4.时间效率高和存储量低:用最少的存储空间,花最少的时间,办成同样的事情就是好算法。
5.算法效率的度量方法
1.事后统计法
2.事前分析估算法
6.函数渐进增长
当操作数越来越大时,算法在在执行效率上的差异越来越大。
7.算法的时间复杂度和空间复杂度
程序运行所花费的时间
程序运行所占用的存储空间
用大O计算法来表示时间复杂度
随着问题规模N的增大,算法执行时间的增长率和F(N) 的增长率相同,称作算法渐进时间复杂度。
推导大O计数法
1.用常数1代替运行时间中左右的加法常数
2.修改后的运行次数中只保留最高阶项
3.最高阶项系数不是1,就除以这个相乘的系数。
大O阶数
1.常数阶O(1)
2.线性阶O(n)
3.对数阶O(logn)
4.平方阶O(n*n)
8.最坏情况和平均情况
平均运行时间是所有情况中最有意义的。
没有特殊说明的情况下,大O计数法都是指最坏情况的时间复杂度。