1 数据结构 绪论(时间空间复杂度) 习题

264 阅读3分钟

视频地址

数据结构的基本概念

02.以下数据结构中,( )是非线性数据结构。

  • A.树
  • B.字符串
  • C.队列
  • D.栈

03.C 顺序表、哈希表和单链表是三种不同的数据结构,既描述逻辑结构,又描述存储结构和数据运算。而有序表是指关键字有序的线性表,仅描述元素之间的逻辑关系,它既可以链式存储,又可以顺序存储,故属于逻辑结构。

image.png


07.链式存储设计时,结点内的存储单元地址( ).

  • A.一定连续
  • B.一定不连续
  • C.不一定连续
  • D.部分连续,部分不连续
  1. A 链式存储设计时,各个不同结点的存储空间可以不连续,但结点内的存储单元地址必须连续。

链式存储设计时,链表结点内的存储单元地址是如何分布的? (baidu.com)


算法基本概念(时间空间复杂度)

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))

降序链表—需要找到最小的,用头插法一个一个插入

图片.png

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,一个算法所需时间由下述递归方程表示,试求出该算法的时间复杂度的级别

图片.png

式中,n是问题的规模,为简单起见,设n是2的整数次幂。

图片.png


02.求时间复杂度

for(i=1;i<=n;i++)
    for(j=1;j<=i;j++)
        for(k=1;k<=j;k++)
            x++;
  1. 我们先看最里面一层

for(k=1;k<=j;k++) x++; 这个需要j次

  1. 然后我们再看二层
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

  1. 最后外面再加一层

for(i=1;i<=n;i++)

这时候就相当于

  • i=1时候 下面是1x(1+1)/2
  • i=2时候 下面是2x(1+2)/2
  • ...
  • i=n时候,下面是nx(1+n)/2

相加

图片.png