注:部分题目解析来自该题目的评论区
第1题
京东商城plus会员的消费记录金额分别为900,512,613,700,810,若采用选择排序算法对其进行从小到大的排序,第三趟排序结果为:(C)
A 900512613700810
B 512900613700810
C 512613700900810
D 512613700810900
1. 512 900 613 700 810
2. 512 613 900 700 810
3. 512 613 700 900 810
第2题
下列关于排序算法中的说法中,错误的有()D
A 在待排序的元素序列基本有序的前提下,效率最高的排序方法是插入排序
B 堆排序的时间复杂度为O(nlogn)
C 关键字比较的次数与激励的初始排列次序无关的是冒泡排序
D 快速排序是一种稳定的排序算法
- A:如果数组有序的话,插排只要O(n)
- B:堆排序的时间复杂度为O(nlogn)
- C:冒泡排序,每一趟都是两两相邻比较,(但是如果一趟中没有发生数据交换,可以结束循环),C不确定吧
- D:稳定排序:冒泡,插排,归并
第3题
在下列排序算法中,哪一个算法的时间复杂度与初始排序无关( D )。
A 直接插入排序
B 气泡排序
C 快速排序
D 直接选择排序
堆归选基与初始序列无关 快选希堆排序不稳定
第4题
对给定的关键字序列110, 119, 007, 911, 114, 120, 122 进行基数排序, 则第 2 趟分配收集后得到的关键字序列是( C )。
A 007, 110, 119, 114, 911, 120, 122
B 007, 110, 119, 114, 911, 122, 120
C 007, 110, 911, 114, 119, 120, 122
D 110, 120, 911, 122, 114, 007, 119
1. 110 120 911 122 114 007 119
2. 007 110 911 114 119 120 122
3. 007 110 114 119 120 122 911
第5题
对于关键字序列(16,10,20,12,18,7,14,13,5,19),不可能构成其二叉排序树中一条查找路径的序列是( C )
A 16,10,7,5
B 16,20,18,19
C 16,10,7,12,14C
D 16,10,12,14
第6题
以下哪种排序算法需要开辟额外的存储空间(B)
A 选择排序
B 归并排序
C 快速排序
D 堆排序
概念: 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并 。
特点: 归并排序的最好、最坏和平均时间复杂度都是 O(nlogn) ,而空间复杂度是 O(n), 比较次数介于(nlogn)/2和(nlogn)-n+1,赋值操作的次数是(2nlogn)。
点评: 归并排序算法比较占用内存,但却是效率高且稳定的排序算法。
第7题
假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为多少次?C
A nn的二次方
B n的二次方/2
C n(n-1)/2
D n(n+1)/2
第8题
在下列排序算法中,在待排序的数据表已经为有序时,花费时间反而最多的是(A)。
A 快速排序
B 希尔排序
C 冒泡排序
D 堆排序
快排最差: (n+1)*n/2-1
第9题
将N条长度均为M的有序链表进行合并,合并以后的链表也保持有序,时间复杂度为()?A
A O(N * M * logN)
B O(N*M)
C O(N)
D O(M)
1. 在每一个链表中取出第一个值,然后把它们放在一个大小为N的数组里,然后把这个数组当成heap建成小(大)根堆。此步骤的时间复杂度为O(N)
2. 取出堆中的最小值(也是数组的第一个值), 然后把该最小值所处的链表的下一个值放在数组的第一个位置。如果链表中有一个已经为空(元素已经都被取出),则改变heap的大小。此步骤的时间复杂度为O(lg N).
3. 不断的重复步骤二,直到所有的链表都为空。
建堆只建一次,复杂度为O(N);调整堆MN-1次,复杂度为(MN-1)*O(lg N)。所以为O(MN*lg N)
第10题
在下列表述中,(ABD)是错误的
A 含有一个或多个空格字符的串称为空串
B 对n(n>0)个顶点的网,求出权最小的n-1条边便可构成其最小生成树
C 选择排序算法是不稳定的
D 平衡二叉树的左右子树的结点数之差的绝对值不超过1
A选项:长度为0 的串为空串,即为“” 。由多个空格字符构成的字符串称为空格串
B选项:如果权值最小的n-1条边构成了环的话,就不能构成最小生成树
D选项:平衡二叉树的左右子树高度之差的绝对值不超过1.
C选项:选择排序包括直接选择排序和堆排序,都是不稳定的算法