下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?(设待排元素个数N>2) (3分)
- 冒泡排序 每次有一个位置确定
-
插入排序 插入插在头结点就全后移
- 堆排序 每次也就移动一个子树另一个子树不变动
- 快速排序 扫描的时候最后肯定有一半排好了
对于序列{ 49,38,65,97,76,13,27,50 },按由小到大进行排序,下面哪一个是初始步长为4的希尔排序法第一趟的结果?
- 13,27,38,49,50,65,76,97
-
49,13,27,50,76,38,65,97
- 49,76,65,13,27,50,97,38
- 97,76,65,50,49,38,27,13
步长值4 就是 49 76 比较 38 13 比较 65 27比较 97 50 比较 选B
将序列{ 2, 12, 16, 88, 5, 10, 34 }排序。若前2趟排序的结果如下:
-
第1趟排序后:2, 12, 16, 10, 5, 34, 88
-
第2趟排序后:2, 5, 10, 12, 16, 34, 88
则可能的排序算法是:(3分)
- 冒泡排序 每次只能选出来一个最大值
-
快速排序 两次就排好了,肯定是快排啊(滑稽)
- 归并排序 归并开始是相邻两个比较不对
- 插入排序 插入排序 只能用一个值
快排不稳定,题目的快排应该是先找的 34, 然后 low指向 0,high指向 34
在下列查找的方法中,平均查找长度与结点个数无关的查找方法是:
- 顺序查找
- 二分法
-
利用哈希(散列)表
- 利用二叉搜索树
给出关键字序列{ 321,156,57,46,28,7,331,33,34,63 },下面哪个选择是按次位优先(LSD)链式基数排序进行了一趟分配和收集的结果? (3分)
- →331→321→33→63→34→156→46→57→7→28
-
→321→331→33→63→34→156→46→57→7→28
- →156→28→321→331→33→34→46→57→63→7
- →57→46→28→7→33→34→63→156→321→331
不会不解释了
对一组数据{ 2,12,16,88,5,10 }进行排序,若前三趟排序结果如下: 第一趟排序结果:2,12,16,5,10,88 第二趟排序结果:2,12,5,10,16,88 第三趟排序结果:2,5,10,12,16,88 则采用的排序方法可能是:
-
冒泡排序
- 希尔排序
- 归并排序
- 基数排序
给定散列表大小为11,散列函数为H(Key)=Key%11。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%11将关键字序列{ 6,25,39,61 }依次插入到散列表中。那么元素61存放在散列表中的位置是: (3分)
-
5
- 6
- 7
- 8
有一组数据(15,9,7,8,20,-1,7,4),用堆排序的筛选方法建立的初始堆为()。 (3分)
- -1,4,8,9,20,7,15,7
- -1,7,15,7,4,8,20,9
-
-1,4,7,8,20,15,7,9
- A,B,C均不对。
在快速排序的一趟划分过程中,当遇到与基准数相等的元素时,如果左右指针都会停止移动,那么当所有元素都相等时,算法的时间复杂度是多少?(3分)
- O(logN)
- O(N)
-
O(NlogN)
- O(N2)
对一个长度为10的排好序的表用二分法查找,若查找不成功,至少需要比较的次数是()。 (3分)
-
4
-
3
- 5
- 6