单循环链表
A
从表中任一结点出发都能扫描到整个链表
B
不再需要头指针了
C
在进行插入、删除操作时,能更好地保证链表不断开
D
已知某个结点的位置后,能够容易找到它的直接前趋
正确答案 A
归并排序相对于快速排序的优点不包括()
A:归并排序是稳定排序,快速排序是不稳定排序,故A对。
B:归并排序的最坏时间复杂度为O(nlogn),而快速排序的最坏时间复杂度为O(n^2),故B对。
C:归并排序需要额外的O(n)的空间,快速排序需要额外的O(1)的空间,故C错。
D:归并排序的平均时间复杂度和最坏时间复杂度均为O(nlogn),不会退化;
快速排序的平均时间复杂度为O(nlogn),最坏时间复杂度为O(n^2),会退化;
故D对。
对给定的关键字序列110, 119, 007, 911, 114, 120, 122 进行基数排序, 则第 2 趟分配收集后得到的关键字序列是( )。
基数排序一般从最低有效位开始即个位开始排序,
第一趟排出110,120,911,122,114,007,119,
第二趟按照次高有效位即十位排序,
第二趟排出007,110,911,114,119,120,122.
基数排序与关键字的位数有关,但也是一种稳定排序。
在快速排序中,要使最坏情况的空间复杂度为O(log2n )则要对快速排序作( )修改。
A
划分元素为三者取中
B
采用表排序
C
先排最小集合
D
先排大集合
快速排序的思想:
先从数列中取出一个数作为基准数
分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边
再对左右区间重复第二步,直到各区间只有一个数
最优的情况下空间复杂度为:O(log2n) ;每一次都平分数组的情况,基准数尽量为中间数。
快速排序的最坏情形是数组为正序或逆序,如果pivot总是选择第一个元素,那么每次划分只得到一个比上一次划分少一个记录的子序列,此时需要执行次递归调用。显然,采用A(划分元素为三者居中),能够将每次待排序的part尽可能一分为二,从而使得递归深度为),即空间复杂度为
在一般包含n个节点的二叉搜索树中查找的最差时间复杂度是?
A
O(log(n))
B
O(n)
C
O(n^2)
D
O(1)
二叉搜索树可以不平衡
关于双链表的搜索给定元素操作的说法正确的是?
A
从两个方向搜索双链表,比从一个方向搜索双链表的速度慢
B
从两个方向搜索双链表,比从一个方向搜索双链表的方差要小
C
从两个方向搜索双链表,比从一个方向搜索双链表速度要快
D
以上说法都不正确
B 如果链表数据是无序的,则单向搜索与双向搜索平均速度相同 如果链表是有序的,而要搜索的数据距离最小值(最大值)较近,这种情况下双向搜索平均速度更快。 因此双向搜索更稳定,方差更小
B树
B树:二叉树
B-树:是一种多路搜索树
B+树:B+树是B-树的变体,也是一种多路搜索树:非叶子结点的子树指针与关键字个数相同
B*树: 是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针;
有关希尔排序算法叙述正确的是( )
A
最后一次的步长增量一定为1
B
分割后子序列内部的排序算法是直接插入排序
C
分割后子序列内部的排序算法是直接选择排序
D
希尔排序是稳定排序算法
正确答案:AB
下面算法中可以判断出一个有向图是否有环的是:()
A
求最短路径
B
深度优先遍历
C
广度优先遍历
D
拓扑排序
有向图是否有环的判定算法,主要有深度优先和拓扑排序两种方法。