最好、最坏和平均时间复杂度
与输入实例有关
一般考虑最坏情况下的时间复杂度
对于复杂的算法,可以把它分成几个容易估算的部分,然后利用O 的加法法则和乘法法则来计算:
加法法则
乘法法则
1.4.4 算法的空问复杂度
S(n) = O(f (n))
算法要占据的空间=算法本身占据的空间+算法使用的辅助空间
【例】数组逆序,将一维数组a中的n个数逆序存放到原数组中。
t即做辅助空间
S(n)=O(1) 原地工作
S(n)=O(n)
附:章末习题
习题
1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
学生信息表 是 线性结构 链式储存结构
3.简述逻辑结构的四种基本关系并画出它们的关系图。
4.存储结构由哪两种基本的存储方法实现?
顺序 链式
5.选择题
(1)在数据结构中,从逻辑上可以把数据结构分成( C )。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构
C.线性结构和非线性结构 D.内部结构和外部结构
(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的( C )。
A.存储结构 B.存储实现
C.逻辑结构 D.运算实现
(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着( B )。
A.数据具有同一特点
B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致
C.每个数据元素都一样
D.数据元素所包含的数据项的个数要相等
(4)以下说法正确的是( D )。
A.数据元素是数据的最小单位
B.数据项是数据的基本单位
C.数据结构是带有结构的各数据项的集合
D.一些表面上很不相同的数据可以有相同的逻辑结构
(5)以下与数据的存储结构无关的术语是( C )。
A.顺序队列 B. 链表 C. 有序表 D. 链栈
(6)以下数据结构中,( A )是非线性数据结构
A.树 B.字符串 C.队 D.栈
6.试分析下面各程序段的时间复杂度。
(1)x=90; y=100;
while(y>0)
if(x>100)
{x=x-10;y--;}
else x++;
T(n)=O(10) (1)O(1) 常数阶均记为1
(2)for (i=0; i<n; i++)
for (j=0; j<m; j++)
a[i][j]=0;
T(n)=O(n*m)
(3)s=0;
For( i=0; i<n; i++)
for(j=0; j<n; j++)
s+=B[i][j];
sum=s;
T(n)=O(n^2)
(4)i=1;
while(i<=n)
i=i*3;
T(n)=O(lgn)
(5)x=0;
for(i=1; i<n; i++) n
for (j=1; j<=n-i; j++) j—>n-1
x++;
T(n)=O(n^2)
(6)x=n; //n>1
y=0;
while(x≥(y+1)* (y+1))
y++;
T(n)=O(n^1/2)