绪论
什么是数据结构
数据结构是研究非数值运算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。
数据的逻辑结构、存储结构及其操作。
基本概念和术语
数据(data):对客观事物的符号表示,在计算机科学中是指能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(data element):数据的基本单位。数据元素可以由若干个数据项(data item)组成。数据项是数据的不可分割的最小单位。
数据对象(data object):性质相同的数据元素的集合,是数据的一个子集。
数据结构(data structure):相互之间存在一种或多种特定关系的数据元素的集合。
数据之间存在的某种关系,称为结构(structure)。通常有4类基本结构:1)集合;2)线性结构;3)树形结构;4)图状结构或网状结构。
结构定义中的关系描述的是数据元素之间的逻辑关系。因此又称为数据的逻辑结构。
讨论数据结构的目的是为了在计算机中实现对它的操作。因此还要研究如何在计算机中表示它。
数据结构在计算机中的表示(映像)称为数据的物理结构,又称为存储结构。它包括数据元素的表示和关系的表示。
在计算机中表示信息的最小单位是二进制数的一位,叫做位(bit)。
可以使用一个由若干位组合起来形成的一个位串表示一个数据元素。通常称位串为元素(element)或结点(node)。当数据元素由若干个数据项组成时,位串中对应于各个数据项的子位串称为数据域(data field)。元素和结点可以看成是数据元素在计算机中的映像。
数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像和非顺序映像。由此得到两种不同的存储结构:顺序存储结构和链式存储结构。
顺序映像的特点:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
非顺序映像的特点:借助指向元素存储地址的指针(pointer)表示数据元素之间的逻辑关系。
数据的逻辑结构和物理结构是密切相关的两个方面,以后读者会看到,任何一个算法的设计取决于选定的数据(逻辑)结构,而算法的实现依赖于采用的存储结构。
如何描述存储结构呢?
不能直接利用内存地址来描述存储结构。可以借用高级程序语言中提供的“数据类型”来描述它。接下来讨论的存储结构是数据结构在C虚拟处理器中的表示,不妨称它为虚拟存储结构。
数据类型(data type)是和数据结构密切相关的一个概念。数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
按“值”的不同特性,高级语言中的数据类型可以分为两类:一类是非结构的原子类型,原子类型的值是不可分解的。另一种是结构类型,结构类型的值是由若干个成分按照某种结构组成的,是可以分解的。
数据类型并非局限于高级语言中,每个处理器(计算机硬件系统、操作系统、高级语言、数据库)都提供了一组原子类型或结构类型。引入数据结构的目的,从硬件角度看,是作为解释计算机内存中信息含义的一种手段,而对使用数据类型的
抽象数据类型的表示和实现
算法和算法分析
算法
算法是对特定问题求解步骤的一种描述;
特点:有穷性;确定性;可行性;输入;速出;
算法设计的要求
健壮性:输入非法值时,能适当做出反应,不会产生莫名其妙的结果;
正确性:
可读性:便于阅读交流、修改调试;
效率与低存储量要求:算法执行时间
算法效率的度量
事后统计的方法:
事前分析估算的方法:
算法是有控制结构(顺序、分支、循环)和原操作构成的。算法的时间取决于两者的综合效果。
一般来说算法中基本操作的重复执行次数是问题规模n的某个函数f(n)
算法的时间量度记作:
T(n)=O(f(n))
称作算法的渐近时间复杂度,简称时间复杂度。
算法的存储空间需求
还有空间复杂度:与算法所需的存储空间作为量度。
原文地址:https://www.cnblogs.com/grooovvve/p/10398400.html