1 数据结构起源
(1) 计算机从解决数值计算问题到解决生活中的问题
(2) 现实生活中的问题涉及不同个体间的复杂联系
(3) 需要在计算机程序中描述生活中个体间的联系
2 数据结构主要研究非数值计算程序问题中的操作对象以及它们之间的关系
3 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
4 按照视点的不同,数据结构可以分为逻辑结构和物理结构 。
(1) 逻辑结构包含集合结构,线性结构,树形结构,图形结构。
(2) 物理结构包含顺序结构和链接结构 。
5 算法的定义
(1) 算法是特定问题求解步骤的描述
(2) 在计算机中表现为指令的有限序列
6 算法是独立存在的一种解决问题的方法和思想。对于算法而言,语言并不重要,重要的是思想
7 算法的特性
(1) 输入:算法具有0个或多个输入
(2) 输出:算法至少有1个或多个输出
(3) 有穷性:算法在有限的步骤之后会自动结束而不会无限循环
(4) 确定性: 算法中的每一步都有确定的含义,不会出现二义性
(5) 可行性:算法的每一步都是可行的
8 算法设计的准则
(1) 正确性
算法对于合法数据能够得到满足要求的结果
算法能够处理非法输入,并得到合理的结果
算法对于边界数据和压力数据都能得到满足要求的结果
(2) 可读性:算法要方便阅读,理解和交流
(3) 健壮性:算法不应该产生莫名其妙的结果
(4) 高性价比:利用最少的时间和资源得到满足要求的结果
9 算法效率的度量
(1) 事后统计法
比较不同算法对同一组输入数据的运行处理时间
缺陷:
为了获得不同算法的运行时间必须编写相应程序
运行时间严重依赖硬件以及运行时的环境因素
算法的测试数据的选取相当困难
(2) 事前分析估算
依据统计的方法对算法效率进行估算
(3) 大O表示法
算法效率严重依赖于操作(Operation)数量
在判断时首先关注操作数量的最高次项
操作数量的估算可以作为时间复杂度的估算
10 影响算法效率的主要因素
(1) 算法采用的策略和方法
(2) 问题的输入规模
(3) 编译器所产生的代码
(4) 计算机执行速度