数据结构 第一章 数据结构概念

信息化世界:

 

 

数据元素、数据项
数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。
一个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位。
如:数据元素是类,数据项是成员变量

数据(data):所有能输入到计算机中去的描述客观事物的符号
数据结构、数据对象
数据结构是数据相互之间存在一种或多种特定关系【类方法】的数据元素的集合【强调的是关系】。
数据对象相同性质的数据元素的集合,是数据的一个子集【强调的是相同数据元素】。

 

struct element{ // 数据元素、数据结构
int item1; // 数据项
int item2;
}object; // 数据对象

 

各项的包含关系:

 

 

 

逻辑结构:集合、线性结构、树状结构、图(网)状结构:

    

 

 

 

 

 

物理结构(存储结构)---如何用计算机表示数据元素的逻辑关系
包括:顺序、链式、索引、散列 【存储】
其中, 链式、索引、散列是非顺序存储,数据元素在物理上可以是离散的。
数据的存储结构会影响内存分配的效率。

 

以线性结构 NULL->A->B->C->D->E->NULL为例,分别展示各对应的物理结构:

 

 

 

 

 

 

 

 

 

【数据的运算】
施加在数据上的运算,包括运算的定义和实现。
运算的定义是 针对逻辑结构的,指出运算的功能。运算的实现是针对存储结构的,指出运算的具体操作步骤。

 


在探讨一种数据结构时:
1. 定义逻辑结构【数据元素之间的关系】
2. 定义数据的运算【针对实现需求,应该对这种逻辑结构进行什么样的运算】
3. 确定某种存储结构,实现数据结构,并实现一些对数据结构的基本运算

 

程序=数据结构+算法
数据结构:现实世界的问题信息化的数据。
算法:如何处理这些信息化的数据,以解决实际问题。

算法的特性:
1. 有穷性,算法必须是有穷的,程序可以是无穷的。
2. 确定性。
3. 可行性。
4. 输入个数(>=0)
5. 输出个数(>=1)


好的算法的判断:
1. 正确性。
2. 可读性,w无歧义的描述出解决问题的步骤。
3. 健壮性。
4. 度低【算法的度指:时间复杂度、空间复杂度】。

算法的度一般用 大O标记法,只考虑阶数高的部分。

时间复杂度:T = f(n) = O(n)      n为问题的规模。

空间复杂度:S = f(n) = O(n)       n为问题的规模 S=space 程序运行时所占空间的大小。

 【术语】原地工作:算法所需的内存空间为常量。

 空间复杂度=递归调用的深度,在实际开发中,基本不会用到递归,所以也基本上不去考虑空间复杂度。

 

 【规则,以时间复杂度为例】

加法规则:多项相加,只保留最高阶的项,且系数为1

T(n) = T1(n) + T2(n) = O(f(n)) + O(g(n))  = O(max(f(n),g(n)))

乘法规则:多项相乘,按结果值的最高阶的项,系数不一定为1

T(n) = T1(n) * T2(n) = O(f(n)) * O(g(n))  = O(max(f(n)*g(n)))

 

大小比较:

O(1) < O(log2n) < O(n) < O(nlog2n) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn

 记忆口诀:

常    对     幂   指   阶    特殊幂O(nn

 

证明需要使用到 洛必达法则。

 

 

 

 平均复杂度:考虑所有输入数据都等概率出现的情况。

 T(n) =p1*T1(n) *+p2*T2(n)  + ... + pn*Tn(n);

 

posted @ 2021-01-11 09:32  雪域蓝心  阅读(111)  评论(0编辑  收藏  举报