第一章——绪论
1.1数据结构的组成
数据结构:通过研究、分析数据本身的特点,利用这些特点提高数据表示和处理的效率。
PS:信息的表示和组织形式直接影响到数据处理的效率!
1.2数据结构的发展概况及地位
1.4抽象数据类型(ADT)
数据模型+一组操作
数据结构+一组操作
一个数据类型的实现一般分为三个阶段:
1.ADT阶段,又称为定义阶段。
2.虚拟数据类型阶段,有称为表示阶段。
3.物理数据类型阶段,又称为物理实现阶段。
数据结构、抽象数据类型、数据类型、存储结构的关系?
1.5算法的基础知识
一、算法的定义及特性
算法是解决问题的一种方法,即它给出了求解问题的步骤描述。
1.算法的特性或要素:有穷性、确定性、可行性、输入(0或多个)和输出(至少一个)。
2.算法与数据类型的关系
3.算法与程序的区别
二、算法的描述
1.自然语言描述:容易,但有时啰嗦、有二义性。
2.图示:直观清晰,但不宜实现
3.算法语言:严谨、简洁,易用程序实现。
4.程序设计语言:可以直接运行,但太严格。
三、算法的评价标准
正确性、易读性、健壮性、效率(时间以及空间)
PS:多写注释四、算法分析
算法分析:估量一个算法效率的方法
1.算法分析的方法
先验估计(事前估计):根据算法的逻辑特征(基本操作的次数)来估算。
优点:可比性强。
缺点:不精确,仅仅只是估计。
经验测试(事后计算):选择样本数据、运行环境运行算法计算出空间、时间。
优点:精确。
缺点:可比性差,效率低,成本高。
2.算法分析的一般步骤
语句频度:算法中一个基本操作执行的次数
1.计算出算法的各个语句的频度
2.统计出算法的语句频度和T(n) //n是问题的规模
3.给出T(n)的大O表示法 称算法的时间复杂度 T(n)=O(f(n))
3.最好时间复杂性、最坏时间复杂性、平均时间复杂性
对于有些算法,问题规模形同,如果输入集不同,其效率不同
4.O表示的含义——渐进算法分析
5.常见时间复杂度
O(1) O(log(2)n) O(n) O(nlog2n) O(n*n) O(n*n*n) O(2(n))
时间复杂度增大
6.渐进复杂性分析的重要性
计算机本身性能的提高不能带来求解问题规模的增益
复习小结
1.抽象数据类型的概念:
2.抽象数据类型的定义:
3.抽象数据类型的实现阶段:
4.算法的概念:
5.算法的特性
6.算法的评价
7.算法分析