数据结构练习题及答案

来源:互联网 发布:linux返回根目录命令 编辑:程序博客网 时间:2024/05/07 00:43

一、判断题


1、所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。(2分)



解:错误。将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)


2、NNN个数据按照从小到大顺序组织存放在一个单向链表中。如果采用二分查找,那么查找的平均时间复杂度是O(logN)O(logN)O(logN)(3分)


解: 错误。数组二分查找的平均复杂度是O(logN)没有错,一看到这个就跳坑了= =然后知道陷阱来了!按顺序存放在【单项链表】中。二分查找是不可以用链表存储的。为什么呢,请看下面解释:

<span style="font-size:14px;">   这是由链表的特性决定的。链表是很典型的顺序存取结构,   数据在链表中的位置只能通过从头到尾的顺序检索得到,即使是有序的,要操作其中的某个数据也必须从头开始。   这和数组有本质的不同。数组中的元素是通过下标来确定的,只要你知道了下标,就可以直接存储整个元素,   比如a[5],是直接的。链表没有这个,所以,折半查找只能在数组上进行。</span>


二、选择题
  1. 给定N×NN\times NN×N的二维数组A,则在不改变数组的前提下,查找最大元素的时间复杂度是:(4分)
    1.  O(N2)O(N^2)O(N2)
    2.  O(NlogN)O(NlogN)
    3.  O(N)O(N)
    4.  O(N2logN)O(N^2 logN)

解:选择第四个。

  1. 给定程序时间复杂度的递推公式:T(1)=1T(1)=1T(1)=1T(N)=2T(N/2)+NT(N)=2T(N/2)+NT(N)=2T(N/2)+N。则程序时间复杂度是:(4分)
    1. O(logN)O(logN)
    2. O(N)O(N)O(N)
    3.  O(NlogN)O(NlogN)
    4. O(N2)O(N^2)O(N2)
解:选择第三个。
    举个栗子:
      T(8)->T(4)+T(4)+8->T(2)+T(2)+T(2)+T(2) +8+8->T(1)*8+8+8+8 = 8*4
       递归深度为logn每层执行n次


0 0
原创粉丝点击