01、绪论考点
绪论
一、数据
1、数据项是数据的最小单位;
2、数据元素是数据的基本单位;
3、数据对象是数据元素的集合;
二、数据结构
1、数据结构从逻辑上分为:线性结构和非线性结构;
2、数据结构从存储上分为:顺序存储、链接存储、索引存储、散列存储;
注意:在存储数据时,不仅要存储各数据元素的值,还要存储数据元素之间的关系。
顺序存储方法把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系 由存储单元的邻接关系来体现。
链式存储方法不要求逻辑上相邻的结点在物理位置上亦相 邻,结点间的逻辑关系由附加的指针表示。
三、数据类型
1、数据类型:是一个数值的集合和定义在这个值集合上的一组操作的总称,数据类型本身不参加运算,只有其定义的变量才能参与运算;
2、抽象数据类型:是一种构造数据类型;
四、算法
1、算法的5大特性:可行性、确定性、有穷性、0个或者0个输入、至少1个以上的输出;
2、算法的评价标准:时间复杂度、空间复杂度;
3、算法设计的要求:正确性、可读性、健壮性、高效性、简单性;
五、实例分析
1、各算法的时间复杂度求解过程:
1)以下语句的时间复杂度为 O(𝑛 2 )
for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++;
2)下面程序段的时间复杂度是 O(m*n)
for(i=0;i<m;i++) for(j=0;j<n;j++) a[i][j]=i*j;
3)下面程序段的时间复杂度是 O(𝑛 2 )
s =0; for( i =0; i< n; i++) for(j=0;j< n;j++) s +=B[i][j]; sum = s ;
2、方法总结
算法的时间复杂度:算法中的基本运算(最深层循环内的语句)
算法的时间复杂度不仅依赖于问题的规模n,也取决于待输入数据的性质
各情况分别讨论:
①循环主体中的变量参与循环条件的判断
int i=1; while(i<=n) i=i*2;
分析:设执行次数为T(n),故2^T(n)<=n,则T(n)<=log2n
区别
i=1; k=0; while(i < n-1) { k=k+10*i; i++; }
分析:此情况类似与循环主体中的变量与循环条件无关
②
count=0; for(k=1; k<=n; k*=2) for(j=1; j<=n; j++) count++;
分析:此语句的基本操作与循环条件无关,可外循环又与之有关,故需分开讨论
外:设为k,故k<=log2n
内:n
故:O(nlog2n)
③
int m=0,i,j; for(i=1;i<=n;i++) for(j=1; j<= 2*i;j++) m++;
分析:内循环执行次数与外循环执行次数有关时
故:n(n+1)