数据结构
第一章 绪论
1.1 数据结构在程序设计中的作用
计算机不能分析问题并产生问题的解决方案,必须由人(即程序设计者)分析问题,确定问题的解决方案,编写程序,然后让计算机执行程序最终获得问题的解。
1.3 数据结构的基本概念
1.3.1 数据结构
1、数据是信息的载体,在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合。
数值数据:整数、实数
数据 .非数值数据:文字、声音、图形和图像
2、数据元素:一般来说,能独立、完整地描述问题世界的一切实体都是数据元素。在计算机程序中通常作为一个整体进行考虑和处理。
数据项:构成数据元素的不可分割的最小单位。
3、数据结构是指相互之间存在一定关系的数据元素的集合。数据元素是讨论数据结构时涉及的最小数据单位。
逻辑结构:数据元素之间逻辑关系的整体。用户视图,面向问题。
根据数据元素之间逻辑关系的不同,数据结构分为以下四类:
1. 集合:数据元素之间就是“属于同一个集合”,除此之外,没有任何关系。
2 .线性结构:数据元素之间存在着一对一的线性关系。
3 .树结构:数据元素之间存在着一对多的层次关系。树结构和图结构也称非线性结构。
4.图结构:数据元素之间存在着多对多的任意关系。
存储结构:(物理结构)数据及其逻辑结构在计算机中的表示。实质上是内存分配,在具体实施时依赖于计算机语言。具体实现的视图。面向计算机。
通常有两种存储结构:
1.顺序存储结构:用一组连续的存储单元依次存储数据元素,数
据元素之间的逻辑关系由元素的存储位置来表示。
2.链接存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。
一般来说,一种数据的逻辑结构可以用多种存储结构来存储,而采用不同的存储结构,其数据处理的效率往往是不同的。
1.3.2 抽象数据类型
1. 数据类型:是一组值的集合以及定义于这个值集上的一组操作的总称。规定了该类型数据的取值范围和对这些数据所能采取的操作。
2. 抽象:所谓抽象,就是抽出问题本质的特征而忽略非本质的细节,是对具体事物的一种概括。
3.抽象数据类型(ADT):是一个数据结构以及定义在该结构上的一组操作的总称。
a.数据类型指的是高级程序设计语言支持的基本数据类型。由类的
数据类型和ADT的区别 成员变量来实现。
b.ADT 指的是自定义的数据类型。ADT的每个操作由类的成员函数来实现。
1.4 算法及算法分析
1.4.1 算法及其描述方法
1、算法:对特定问题求解步骤的一种描述,是指令的有限序列。
算法的5个重要特性:输入、输出、有穷性、确定性、可行性。
算法不等于 程序
一个好的算法还需要满足:正确性、鲁棒性、简单性、抽象分级、高效性。
2、 算法的描述方法
1.自然语言2.流程图3.程序设计语言4.伪代码
1.4.2 算法分析
1、度量算法效率的方法:
事后统计:先将算法实现,然后输入适当的数据运行,测量其时间和空间开销。缺点:1、编写程序实现算法将花费较多的时间和精力;2、所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的劣势。
事前分析估算——渐进复杂度:它是对算法所消耗资源的一种估算方法。
2、算法的时间复杂度:
影响算法时间代价的最主要因素是问题规模。问题规模是指输入量的多少,它可以从问题描述中得到。
为了客观地反映一个算法的执行时间,可以用算法中基本语句的执行次数来度量算法的工作量。基本语句是执行次数与整个算法的执行次数成正比的语句,基本语句对算法运行时间的贡献最大,是算法中最重要的操作。
3. 最好、最坏和平均情况:
对于某些算法,即使问题规模相同,如果输入数据不同,其时间开销也不同。
4. 算法的空间复杂度:
算法的空间复杂度是指在算法的执行过程中,需要的辅助空间数量。辅助空间是指除算法本身和输入输出数据所占据的空间外,算法临时开辟的存储空间。通常记作:
S(n)=O(f(n))
其中,n为问题规模,分析方法与算法的时间复杂度类似。
5. 算法分析举例
分析算法的时间复杂度的基本方法是:找出所有语句中执行次数最大的那条语句作为基本语句,计算基本语句的执行次数,取其数量级放入大O中即可。
本篇博客深入探讨了数据结构在程序设计中的关键作用,详细解释了数据结构的基本概念,包括数据、数据元素、数据项以及逻辑结构与存储结构,并引入抽象数据类型的概念。此外,还阐述了算法及其描述方法、算法分析的重要性,特别是如何度量算法效率和时间复杂度。通过实例分析,读者可以更深入理解数据结构与算法在实际应用中的价值。

被折叠的 条评论
为什么被折叠?



