视频地址
数据结构的基本概念
02.以下数据结构中,( )是非线性数据结构。
- A.树
- B.字符串
- C.队列
- D.栈
03.C 顺序表、哈希表和单链表是三种不同的数据结构,既描述逻辑结构,又描述存储结构和数据运算。而有序表是指关键字有序的线性表,仅描述元素之间的逻辑关系,它既可以链式存储,又可以顺序存储,故属于逻辑结构。
07.链式存储设计时,结点内的存储单元地址( ).
- A.一定连续
- B.一定不连续
- C.不一定连续
- D.部分连续,部分不连续
- A 链式存储设计时,各个不同结点的存储空间可以不连续,但结点内的存储单元地址必须连续。
算法基本概念(时间空间复杂度)
01.一个算法应该是()
- A. 程序
- B.问题求解步骤的描述
- C.要满足五个基本特性
- D.A和C
01.B 本题是中山大学某年的考研真题,题目本身没有问题,考查的是算法的定义。程序不一定满足有穷性,如死循环、操作系统等,而算法必须有穷。算法代表对问题求解步骤的描述,而程序则是算法在计算机上的特定实现。不少读者认为C也对,它只是算法的必要条件,不能成为算法的定义。
02.某算法的时间复杂度为O(n^2),表明该算法的().
- A.问题规模是n^2
- B.执行时间等于n^2
- C.执行时间与n^2成正比
- D.问题规模与n^2成正比
02.c 时间复杂度为O(n),说明算法的时间复杂度Tn)满足T(n)<=c*n^2(c为比例常数),即T(n)=o(n^2),时间复杂度T(n)是问题规模n的函数,其问题规模仍然是n而不是n^2。
10.【2013统考真题】已知两个长度分别为m和n的升序链表,若将它们合并为长度为m+n的一个降序链表,则最坏情况下的时间复杂度是()
- A. O(n)
- B.O(mn)
- C.O(min(m, n))
- D. O(max(m, n))
降序链表—需要找到最小的,用头插法一个一个插入
12.【2017统考真题】下列函数的时间复杂度是
int func(int n){
int i=0,sum O;
while (sum<n) sum += ++i;
return i;
}
- A. O(logn)
- B. O(n^1/2)
- C. O(n)
- D. O(nlogn)
基本运算 sum+=++i,它等价于++i; sum=sum+i,每执行一次i自增1。i=1时,sum=O+1;i=2时, sum=0+1+2;i=3时, sum=0+1+2+3,以此类推得出sum=O+1+2+3+…+i=(1+i)*i/2,可知循环次数t满足(1+t)*t/2<n,因此时间复杂度为O(n^1/2)。因此选B
综合应用题
01,一个算法所需时间由下述递归方程表示,试求出该算法的时间复杂度的级别
式中,n是问题的规模,为简单起见,设n是2的整数次幂。
02.求时间复杂度
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
x++;
- 我们先看最里面一层
for(k=1;k<=j;k++) x++; 这个需要j次
- 然后我们再看二层
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
x++;
这时候就是j=1次时候,下面k(x++)需要遍历1
- j=2,k(x++)遍历2
- ...
- j=i,遍历j次
所以这时候是 1+2+3+....+i=i*(1+i)/2
- 最后外面再加一层
for(i=1;i<=n;i++)
这时候就相当于
- i=1时候 下面是1x(1+1)/2
- i=2时候 下面是2x(1+2)/2
- ...
- i=n时候,下面是nx(1+n)/2
相加