事后统计方法:必须依据算法实现编制好测试程序、通常需要花费大量的时间和精力。
事前分析估算方法:在计算机程序编写前、依据统计方法对算法进行估算。
运行时所耗时间依据:
1、算法代用的策略 方案
2、编译产生的代码质量(取决于编译器等因素)
3、输出规模
4、机器执行命令的速度(计算能力)
用计算的操作次数 可以粗略评估算法效率
比如 用 输入值大小 和 计算值大小 画出平面直角坐标系 图
分析输入次数和计算次数
顺带 可以忽略掉常量
3n+2
2n+3
比如比较如上2个算法的效率区别
其实在n的值非常大的情况下 后面的小常量 基本可以忽略
与最高次项相乘的常数也并不重要、也可以忽略
结论、判断一个算法的效率时、函数中的常数和其他次要项可以忽略、
更应该关注主项(最高项)的阶数
算法是解决特定问题求解步骤的描述、
算法不是唯一的、同一个问题可以有多种解决问题的算法。
算法5个特征:
1、输入 (0个或者多个)
2、输出 (1个或者多个输出、即算法目的)
3、有穷性(且每一个步骤在可接受时间范围内)
4、确定性(每一个步骤都有确定意义、不会出现二义性、无歧义)
5、可行性
尽管算法不唯一、掌握好的算法对解决问题的能力总有提升
算法的要求
1、正确性
算法无语法错误
对于合法的输入能够产生满足要求的输出
对于非法输入能够产生满足规格的说明
对于故意刁难的测试输入都有满足要求的输出结果
2、可读性
算法设计另一目的是为了便于阅读、理解、交流、日后便于修改。
3、健壮性
当输入数据不合法是、算法也能做出相关处理
而不是崩溃、异常等情况
4、时间效率高、存储量低
逻辑结构:
集合结构
线性结构(0-0-0-0)
树形结构(类似金字塔关系)
图形结构(多对多)
物理结构:
实际上就是数据元素存储到计算机的存储器中、(一般指的是RAM)
2种存储方式 顺序存储和链式存储
顺序存储:
是在连续的存储单元里
逻辑关系和物理关系是一致的
链式存储:
是吧数据元素放在任意的存储单元里、可以是连续的也可以不是连续的
需要指针来存放数据元素的地址、通过地址可以找到关联数据的位置