一、知识点总结
1、数据项 是数据不可分割的最小标识单位;数据元素是数据的基本单位。
2、数据项 → 数据元素 → 数据。
3、数据结构是指数据元素的集合以及它们之间的关系。
4、计算机所处理的数据一般都具有某种内在联系,这是指元素与元素之间存在某种关系。
5、在数据结构中,与所使用的计算机无关的是数据的 逻辑结构。( 解析:物理结构即存储结构,在不同的计算机上使用都会产生不同的结果,因此与所使用的计算机有关。 而逻辑结构是通用的,在任何不同的计算机上所进行的运算操作都是统一的。 )
6、数据结构包括数据的逻辑结构、存储结构、数据运算 。
7、数据结构按照逻辑结构可以分为 线性结构、非线性结构。
8、线性结构中元素之间存在 一对一关系;树形结构中元素之间存在 一对多关系;图形结构中元素之间存在 多对多关系。
9、在线性结构中,第一个节点没有前驱节点,其余每个节点 有且仅有一个前驱节点和一个后继节点,最后一个节点没有后继节点。
10、在树形结构中,树根节点没有前驱节点,其余每个集欸但有且只有一个前驱节点,而后继节点可以有多个,叶子节点没有后继节点。
11、在图形结构中,每个节点的前驱节点和后继节点可以有 任意多个。
12、数据的运算最常用的有插入、删除、排序、查找、修改。
13、计算机算法指的是解决问题的有限运算序列。
14、计算机算法应具备 输入、输出、健壮性、可行性、有穷性。
15、一个算法中,不论问题规模大小,运行所需时间都一样,则该算法的时间复杂度为常量阶。
16、数据结构有线性结构、树结构、集合结构、图状结构(网状结构)等逻辑结构。
二、算法时间和空间复杂度分析
1、已知某算法的执行时间为(n³+n²+n)log₂(n+2),n为问题规模,则该算法的时间复杂度为O(n³log₂n).
2、
for(i=0;i<n;i++)
for(j=0;j<m;j++)
A[i][j]=0;
解析:在循环过程中,i的每一次改变,都会使内层循环进行m次,则时间复杂度为O(n*m)
3、
s=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s+=B[i][j];
解析:和第一题的思路一致,时间复杂度为O(n²)
4、
x=0;
for(i=1;i<n;i++)
for(j=1;j<=n-i;j++)
x++;
解析:当i=1时,1≤j≤n-1,执行了(n-1)次;
当i=2时,1≤j≤n-2,执行了(n-2)次;
.
.
.
当i=n-1时,j=1,执行了1次;
综上共执行了(n-1)+(n-2)+...+1=n(n-1)/2=(n²/2-n/2)次(等差数列前n项和)
故时间复杂度为O(n²)
5、
i=1;
while(i<=n)
i=i*3;
解析:循环体中i从1开始,每次变为原来的3倍(1,3,9...),直到不满足条件(i<=n)
退出循环,那么在退出之前,假设共进行了k次,则3^k=n执行最后一次,解得k=log₃n.
综上,时间复杂度为O(log₃n).