《数据结构》第一章——绪论

237 阅读4分钟

基本概念与术语

数据是对客观事物的符号表示(在计算机科学中是指所有能输入到计算机并被计算机处理的符号的总称)。
数据元素是数据的基本单位。
一个数据元素可由若干个数据项组成,数据项是数据的不可分割的最小单位。
数据对象是性质相同的数据元素的集合。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

逻辑结构与物理结构

逻辑结构是数据元素之间的数据项之间的相互关系。
1.集合结构
2.线性结构
3.树形结构 4.图形结构
物理结构是数据的逻辑结构在计算机中的存储形式。
1.顺序存储结构(存储单元连续)
2.链式存储结构(存储单元任意,借助指示元素存储位置的指针表示数据之间的逻辑关系)

位(bit):计算机最小的存储单位。
字节(byte):计算机中数据处理的最小单位。
:计算机进行数据处理时,一次存取、加工、传送的数据长度。
字长:每个字所包含的位数。字长是衡量计算机性能的重要因素,如果一台计算机的字长是另一台的两倍,那么在相同时间内,前者能做的工作是后者的两倍。

数据结构的形式定义为:数据结构是一个二元组 Data_Structure=(D,S),D是数据元素的有限集,S是D上关系的有限集。

抽象数据类型

如何描述存储结构?
在高级程序语言的层次上,我们可以用所有高级程序语言都有的“一维数组类型”来描述顺序存储结构,用C语言提供的“指针”来描述链式存储结构。
数据类型是一组性质相同的值的集合及定义在此集合上的一些操作的总称。
按照“值”的不同特性,数据类型可分为两类:
1.原子类型:不可以再进行分解的基本类型,包括整型、实型、字符型等。
2.结构类型:由若干个类型组合而成,是可以再分解的,如整型数组是由若干整型数据组合而成的。
抽象数据类型(ADT):一个数学模型以及定义在该模型上的一组操作。
一个抽象数据类型定义了一个数据对象、数据对象中各数据元素之间的关系及对数据元素的操作.

算法和算法分析

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

算法的五个重要特性:

1.有穷性:执行有穷步后结束,每步在有穷时间完成。
2.确定性:每步指令有确切含义,执行路径唯一。
3.可行性:算法通过基本操作执行有限次实现。
4.输入:零个或多个输入。
5.输出:一个或多个输出。

算法设计的要求:

1.正确性:至少应该具有输入、输出和加工处理无歧义性、能正确反应问题的需求、能够得到问题的正确答案。
2.可读性
3.健壮性:当输入顺序不合法,算法也能作出相关处理,而不是产生异常或莫名其妙的结果。
4.时间效率高和存储量低

算法效率的度量方法:

1.事后统计方法
2.事前分析估算方法
程序运行消耗时间影响因素:
1.算法采用的策略、方法。(根本)
2.编译产生的代码质量。(软件支持)
3.问题的输入规模。
4.机器执行指令的速度。(硬件性能)
一个程序的运行时间依赖于算法好坏和问题的输入规模。分析程序的运行时间最重要的是把程序看成是独立于程序设计语言的算法或一系列步骤。分析算法运行时间时可以把基本操作的数量与输入规模关联起来。
一般情况下,算法中基本操作执行的重复次数是问题规模n的某个函数f(n),算法的时间量度记作T(n)=O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。
常见的时间复杂度所耗费的时间从小到大是:
O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n) 我们在写代码的时候,可以用时间来换取空间。算法的空间复杂度记作S(n)=O(f(n)),n为问题规模,f(n)为关于n所占存储空间的函数。