数据结构的基本概念
1、术语
数据(data)——客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。有数值型数据和非数值性数据。
数据元素(data element)——数据的基本单位,用于完整地描述一个对象,也可以称为结点,记录。
数据项(data item)——组成数据元素、有独立含义的、不可分割的最小单位,也可以称为域,属性。
数据对象(data object)——性质相同的数据元素的集合,是数据的一个子集。
注:它们的关系:数据 >数据元素 >数据项
比如:
姓名 | 语文 | 数学 | 英语 | 总分 |
张三 | 99 | 100 | 95 | 294 |
李四 | 97 | 98 | 96 | 291 |
在上表中,信息表中的姓名,语文,数学等就是一个数据项,信息表中的张三的所有成绩就是一个数据元素,所有的语文成绩就是一个数据对象。
2、数据结构
定义:相互之间存在一种或多种特定关系的数据元素的集合。
1)逻辑结构(数据元素之间的逻辑关系,与本身无关)
2)存储结构
⑴顺序存储(物理存储)
顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
⑵链式存储
链式存储无需占用一整块存储空间,但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。
注:顺序存储可以随机存取表中的任一元素,但在插入或删除操作中,需移动大量元素。且当表中数据元素个数较多且变化较大时,操作过程相对复杂,必然导致存储空间的浪费。所以这些问题可以通过链式存储结构来解决。
3、算法
1)算法的定义及特性
算法是为了解决某类问题而规定的一个有限长的操作序列。
五个重要特性:
①有穷性:一个算法必须总是在执行有穷步后结束,且 每一步都必须在有穷的时间内完成。
②确定性:对于每种情况下所应执行的操作,在算法中都有确切的规定,不会产生二义性,时算法的执行者或阅读者都能明确其含义及如何操作。
③可行性:算法中所有操作都可以通过已经实现的基本操作运算执行有限次来实现。
④输入:一个算法有零个或多个输入。
⑤输出:一个算法有一个或多个输出,他们时算法进行信息加工后得到的结果,无输出的算法没有任何意义。
2)评价算法的优劣
①正确性:在合理的数据输入下,能够在有限的运行时间内得到正确的结果。
②可读性:一个好的算法,首先应便于人们的理解和相互交流,其次才是机器可执行性。可读性强的算法有助于人们对算法的理解,而难懂的算法易于隐藏错误,且难于调试和修改。
③健壮性:当输入的数据非法时,好的算法能适当地做出正确的反应或相应处理,而不会产生一些奇怪的输出结果。
④高效性:包括时间和空间两个方面。时间高效是指算法设计合理,执行效率高,可以用时间复杂度来度量;空间高效是指算法占用存储容量合理,可用空间复杂度来度量。
x=90;
y=100;
while(y>0)
{
if(x>100)
{x=x-10;y--;}
else x++;
}
这一段代码的时间复杂度为
for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=0;
时间复杂度为
x=n; //n>1
y=0;
while(x>=(y+1)*(y+1))
y++;
时间复杂度为