数据结构复习题集(客观题)

11 篇文章 3 订阅
4 篇文章 3 订阅

一、选择题

在对N个元素进行排序时,基于比较的算法中,其“最坏时间复杂度”中最好的是:

A、О(logN)
B、О(N)
C、О(NlogN)
D、О(N 2 ^2 2

快速排序的时间复杂度最好是O(nlogn),平均也是O(nlogn),这种情况是轴枢恰好能把两侧的分开。
时间复杂度最差是O(N2),最差的情况选择的轴枢在数组最左侧或是最右侧

对一组数据{ 2,12,16,88,5,10 }进行排序,若前三趟排序结果如下: 第一趟排序结果:2,12,16,5,10,88 第二趟排序结果:2,12,5,10,16,88 第三趟排序结果:2,5,10,12,16,88 则采用的排序方法可能是:

A、冒泡排序
B、希尔排序
C、归并排序
D、基数排序

就排序算法所用的辅助空间而言,堆排序、快速排序、归并排序的关系是:

A、堆排序 < 归并排序 < 快速排序
B、堆排序 > 归并排序 > 快速排序
C、堆排序 < 快速排序 < 归并排序
D、堆排序 > 快速排序 > 归并排序

有组记录的排序码为{46,79,56,38,40,84 },采用快速排序(以位于最左位置的对象为基准而)得到的第一次划分结果为:

A、{38,46,79,56,40,84}

B、{38,79,56,46,40,84}

C、{38,46,56,79,40,84}

D、{40,38,46,56,79,84}

对于序列{ 49,38,65,97,76,13,27,50 },按由小到大进行排序,下面哪一个是初始步长为4的希尔排序法第一趟的结果?

A、13,27,38,49,50,65,76,97
B、49,13,27,50,76,38,65,97
C、49,76,65,13,27,50,97,38
D、97,76,65,50,49,38,27,13

给出关键字序列{ 431, 56, 57, 46, 28, 7, 331, 33, 24, 63 },下面哪个选择是按次位优先(LSD)链式基数排序进行了一趟分配和收集的结果?

A、→331→431→33→63→24→56→46→57→7→28
B、→56→28→431→331→33→24→46→57→63→7
C、→431→331→33→63→24→56→46→57→7→28
D、→57→46→28→7→33→24→63→56→431→331

排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置的方法称为:

A、插入排序
B、选择排序
C、快速排序
D、归并排序

对N个元素采用简单选择排序,比较次数和移动次数分别为:

A、O( N 2 N^2 N2),O(N)
B、O(N),O(logN)
C、O(logN),O( N 2 N^2 N2
D、O(NlogN),O(NlogN)

在下列查找的方法中,平均查找长度与结点个数无关的查找方法是:

A、顺序查找
B、二分法
C、利用哈希(散列)表
D、利用二叉搜索树

设散列表的地址区间为[0,16],散列函数为H(Key)=Key%17。采用线性探测法处理冲突,并将关键字序列{ 26,25,72,38,8,18,59 }依次存储到散列表中。元素59存放在散列表中的地址是:

A、8
B、9
C、10
D、11

假定有K个关键字互为同义词,若用线性探测法把这K个关键字存入散列表中,至少要进行多少次探测?

A、K−1
B、K
C、K+1
D、K(K+1)/2

将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。散列函数为:H(Key)=Key%11,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少?

A、0.27
B、0.45
C、0.64
D、0.73

给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:h i _i i(k)=(H(k)±i2)%17将关键字序列{ 6, 22, 7, 26, 9, 23 }依次插入到散列表中。那么元素23存放在散列表中的位置是:

A、0
B、2
C、6
D、15

在散列表中,所谓同义词就是:

A、两个意义相近的单词
B、具有相同散列地址的两个元素
C、被映射到不同散列地址的一个元素
D、被不同散列函数映射到同一地址的两个元素

将10个元素散列到100000个单元的哈希表中,是否一定产生冲突?

A、一定会
B、可能会
C、一定不会
D、有万分之一的可能会

采用线性探测法解决冲突时所产生的一系列后继散列地址:

A、必须大于等于原散列地址
B、必须小于等于原散列地址
C、可以大于或小于但不等于原散列地址
D、对地址在何处没有限制

若用平方探测法解决冲突,则插入新元素时,以下陈述正确的是:

A、插入一定可以成功
B、插入不一定能成功
C、插入一定不能成功
D、若散列表容量为质数,插入就一定可以成功

将 {5, 2, 7, 3, 4, 1, 6} 逐个按顺序插入到初始为空的最小堆(小根堆)中。则该树的前序遍历结果为:

A、1, 3, 2, 5, 4, 7, 6
B、1, 2, 3, 4, 5, 7, 6
C、1, 2, 5, 3, 4, 7, 6
D、1, 3, 5, 4, 2, 7, 6

如果AVL树的深度为5(空树的深度定义为−1),则此树最少有多少个结点?

A、12
B、20
C、33
D、64

根据AVL树的概念——右子树总比左子树高度少一,可以给出如下递推公式
A(n)=A(n-1)+A(n-2)+1 ,且A(0)=1 A(1)=2
A0=1 A1=2 A2=4 A3=7 A4=12 A5=20

将数字 {10, 12, 1, 14, 6, 5, 8, 15, 3, 9, 7, 4, 11, 13, 2} 逐一插入一个初始为空的最小堆(小顶堆),得到的堆序列为:

A、1,3,2,12,6,4,8,15,14,9,7,5,11,13,10
B、1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
C、1,2,3,6,7,5,4,15,14,12,9,10,11,13,8
D、1,3,2,6,7,5,4,15,14,12,9,10,11,13,8

设最小堆(小根堆)的层序遍历结果为{1, 3, 2, 5, 4, 7, 6}。用线性时间复杂度的算法将该堆调整为最大堆(大根堆),则该树的中序遍历结果为:

A、3, 5, 4, 2, 6, 1, 7
B、1, 4, 3, 7, 2, 6, 5
C、3, 5, 4, 7, 2, 6, 1
D、4, 1, 3, 7, 6, 2, 5

下图所示的 AOE 网表示一项包含 8 个活动的工程。活动 d 的最早开始时间和最迟开始时间分别是:
在这里插入图片描述
A、3 和 7
B、12 和 12
C、12 和 14
D、15 和 15

下列代码

if ( A > B ) {
    for ( i=0; i<N; i++ )
        for ( j=N*N; j>i; j-- )
            A += B;
}
else {
    for ( i=0; i<N*2; i++ )
        for ( j=N*2; j>i; j-- )
            A += B;
}

的时间复杂度是:

A、O(N)
B、O( N 2 N^2 N2)
C、O( N 3 N^3 N3)
D、O( N 4 N^4 N4)

给定一个堆栈的入栈序列为{ 1, 2, ⋯, n },出栈序列为{ p1 , p2 , ⋯, pn }。如果p2 =n,则存在多少种不同的出栈序列?

A、n
B、n-1
C、2
D、1

设最小堆(小根堆)的层序遍历结果为{5, 18, 15, 28, 22, 42, 40}。用线性时间复杂度的算法将该堆调整为最大堆(大根堆),则该树的中序遍历结果为:

A、18, 28, 22, 15, 40, 5, 42
B、18, 28, 22, 42, 15, 40, 5
C、5, 22, 18, 42, 15, 40, 28
D、22, 5, 18, 42, 40, 15, 28

二、判断

如果从有向图 G 的每一点均能通过深度优先搜索遍历到所有其它顶点,那么该图一定不存在拓扑序列

要从50个键值中找出最大的3个值,选择排序比堆排序快。

对N个记录进行快速排序,在最坏的情况下,其时间复杂度是O(NlogN)。

希尔排序是稳定的算法。

对N个不同的数据采用冒泡排序进行从大到小的排序,当元素基本有序时交换元素次数肯定最多。

在散列表中,所谓同义词就是被不同散列函数映射到同一地址的两个元素。

将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为M/S。

若用平方探测法解决冲突,则插入新元素时,若散列表容量为质数,插入就一定可以成功。

任何最小堆中从根结点到任一叶结点路径上的所有结点是有序的(从小到大)。

无向连通图至少有一个顶点的度为1。

本人争议

( l o g N ) 2 (logN)^2 (logN)2是O(N)的

不hi

所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。

将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。这种循环队列可以以单链表的方式来在实际编程应用中来实现。因此,循环队列是一个抽象的数据结构,而单向循环链表或循环数组是具体的实现方式,不是数据结构本身。
另一种说法 : 循环队列指的是后者,用数组表示的队列,利用求余数运算使得头尾相接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值