数据结构第一章

数据结构

第一章 绪论
第二章 线性表
第三章 栈、队列和数组
第四章 串
第五章 树与二叉树
第六章 图
第七章 查找
第八章 排序



第一章 绪论

初步了解数据结构的基本内容和基本方法。


1、数据结构的基本概念

1.1、基本概念和术语

数据

数据(Data)是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号
数据是计算机程序加工的原料。
如数学计算中用到的整数和实数,文本编辑中用到的字符串、多媒体程序处理的图形、图像、声音及动画等通过特殊编码定义后的数据。

数据元素

数据元素(Data Element)是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可以由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位。
例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。

数据对象

数据对象(Data Object)是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={O,士1,士2,…}, 字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息也可以是一个数据对象。
集合内元素的性质均相同,都可称之为一个数据对象。

数据类型

数据类型是一个字的集合和定义在此集合上的一组操作的总称
原子类型。其值不可再分的数据类型。
结构类型。其值可以再分解为若干成分(分量)的数据类型。
抽象数据类型。抽象数据组织及与之相关的操作。一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:数据对象、数据对象上关系的集合以及对数据对象的基本操作的集合。

数据结构

数据结构(Data Structure)是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带”结构"的数据元素的集合,“结构”就是指数据元素之间存在的关系。
数据结构包括逻辑结构、存储结构和数据的运算。

数据结构三要素

数据的逻辑结构

数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立千计算机的。数据逻辑结构的分类如下图所示:
在这里插入图片描述
在上图中非线性结构下面少了一个集合,即非线性结构应包括集合,树结构和图结构三部分。
集合。结构中的数据元素之间除“同属一个集合”外,别无其他关系。
线性结构。结构中的数据元素之间只存在一对一的关系。
树形结构。结构中的数据元素之间存在一对多的关系。
图状结构。结构中的数据元素之间存在多对多的关系。
在这里插入图片描述

数据的存储结构

数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。数据存储结构主要有顺序存储、链式存储、索引存储和散列存储。
①顺序存储。
顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。
其优点可以实现随机存取,每个元素占用最少的存储空间;缺点是只能使用相邻的一整块存储单元,因此可能产生较多的外界碎片。
②链式存储。
不要求逻辑上相邻的元素在物理位置上也相邻,借助指示元素存储位置的指针来表示元素之间的逻辑关系
其优点是不会出现碎片化现象,能充分利用所有存储单元;缺点是每个元素因存储指针而占用额外的存储空间,且只能实现顺序存取。
③索引存储。
在存储元素的同时,还建立附加的索引表。索引表中的每项程索引项。
其优点是检索速度快;缺点是附加的索引表额外占用存储空间。另外增加和删除数据时也要修改索引表,花费的时间多。
④散列存储。
根据元素的关键字直接计算出该元素的存储地址,又称哈希存储。
优点是检索、增加和删除结点的操作都很快;缺点是若散列存储函数不好,则可能出现元素存储单元冲突,而解决冲突会增加时间和空间开销。

数据的运算

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

2、算法和算法评价

2.1、算法的基本概念

算法(Algorithm)是为了解决某类问题而规定的一个有限长的操作序列
一个算法必须满足以下五个重要特性:
(1)有穷性。一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。
(2)确定性。对千每种情况下所应执行的操作,在算法中都有确切的规定,不会产生二义性,使算法的执行者或阅读者都能明确其含义及如何执行。
(3)可行性。算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。
(4)输入。一个算法有零个或多个输入。当用函数描述算法时,输入往往是通过形参表示的,在它们被调用时,从主调函数获得输入值。
(5)输出。一个算法有一个或多个输出,它们是算法进行信息工后得到的结果,无输出的算法没有任何意义。当用函数描述算法时,输出多用返回值或引用类型的形参表示。
一个算法的优劣应该从以下几方面来评价:
(1)正确性。在合理的数据输入下,能够在有限的运行时间内得到正确的结果。
(2)可读性。一个好的算法,首先应便千人们理解和相互交流,其次才是机器可执行性。可读性强的算法有助于人们对算法的理解,而难懂的算法易千隐藏错误,且难千调试和修改。
(3)健壮性。当输入的数据非法时,好的算法能适当地做出正确反应或进行相应处理,而不会产生一些莫名其妙的输出结果。
(4)高效性。高效性包括时间和空间两个方面。时间高效是指算法设计合理,执行效率高,可以用时间复杂度来度量;空间高效是指算法占用存储容量合理,可以用空间复杂度来度量。时间复杂度和空间复杂度是衡量算法的两个主要指标。

2.2算法效率的度量。

时间复杂度
T(n)=O(f(n))

T(n)算法中所有语句的频度之和。
O的含义是T(n)的数量级。
f(n)算法中基本运算的频度。
一条语句的重复执行次数称作语句频度(Frequency Count)。
称算法在最好情况下的时间复杂度为最好时间复杂度,指的是算法计算量可能达到的最小值;
称算法在最坏情况下的时间复杂度为最坏时间复杂度,指的是算法计算量可能达到的最大值;
算法的平均时间复杂度是指算法在所有可能情况下,按照输入实例以等概率出现时,算法计算量的加权平均值。
在这里插入图片描述

空间复杂度

作为算法所需存储空间的扯度,简称空间复杂度,它也是问题规模n的函数,记作:

S(n)=O(g(n))

小结

①数据结构包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算
a.同一逻辑结构采用不同的存储方法,可以得到不同的存储结构。逻辑结构是从具体问题抽象出来的数学模型,从逻辑关系上描述数据,它与数据的存储无关。
b.根据数据元素之间关系的不同特性,通常有四类基本逻辑结构:集合结构、线性结构、树形结构和图状结构
②抽象数据类型是指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:数据对象、数据对象上关系的集合,以及对数据对象的本操作的集合。
③算法是为了解决某类问题而规定的一个有限长的操作序列。算法具有五个特性:有穷性、确定性、可行性、输入和输出。一个算法的优劣应该从以下四方面来评价:正确性、可读性、健壮性和高效性
④算法分析的两个主要方面是分析算法的时间复杂度和空间复杂度,以考察算法的时间和空间效率。一般情况下,鉴于运算空间较为充足,故将算法的时间复杂度作为分析的重点。算法执行时间的数量级称为算法的渐近时间复杂度,T(n)= 0(f(n)),它表示随着问题规模n的增大,算法执行时间的增长率和.f(n)的增长率相同,简称时间复杂度。
注:书本参考:王道考研2023、数据结构(C语言)第二版

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值