下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?(设待排元素个数N>2) (3分)

  1. 冒泡排序 每次有一个位置确定
  2. 插入排序 插入插在头结点就全后移

  3. 堆排序  每次也就移动一个子树另一个子树不变动
  4. 快速排序 扫描的时候最后肯定有一半排好了

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

  1. 13,27,38,49,50,65,76,97
  2. 49,13,27,50,76,38,65,97

  3. 49,76,65,13,27,50,97,38
  4. 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分)

  1. 冒泡排序 每次只能选出来一个最大值
  2. 快速排序 两次就排好了,肯定是快排啊(滑稽)

  3. 归并排序 归并开始是相邻两个比较不对
  4. 插入排序 插入排序 只能用一个值

快排不稳定,题目的快排应该是先找的 34, 然后 low指向 0,high指向 34

 

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

 

  1. 顺序查找
  2. 二分法
  3. 利用哈希(散列)表 

  4. 利用二叉搜索树

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

  1. →331→321→33→63→34→156→46→57→7→28
  2. →321→331→33→63→34→156→46→57→7→28

  3. →156→28→321→331→33→34→46→57→63→7
  4. →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 则采用的排序方法可能是: 

  1. 冒泡排序

  2. 希尔排序
  3. 归并排序
  4. 基数排序

给定散列表大小为11,散列函数为H(Key)=Key%11。采用平方探测法处理冲突:h​i​​(k)=(H(k)±i​2​​)%11将关键字序列{ 6,25,39,61 }依次插入到散列表中。那么元素61存放在散列表中的位置是: (3分)

  1. 5

  2. 6
  3. 7
  4. 8

有一组数据(15,9,7,8,20,-1,7,4),用堆排序的筛选方法建立的初始堆为()。 (3分)

  1. -1,4,8,9,20,7,15,7
  2. -1,7,15,7,4,8,20,9
  3. -1,4,7,8,20,15,7,9

  4. A,B,C均不对。

在快速排序的一趟划分过程中,当遇到与基准数相等的元素时,如果左右指针都会停止移动,那么当所有元素都相等时,算法的时间复杂度是多少?(3分)

  1. O(logN)
  2. O(N)
  3. O(NlogN)

  4. O(N​2​​)

对一个长度为10的排好序的表用二分法查找,若查找不成功,至少需要比较的次数是()。 (3分)

  1. 4

  2. 3

  3. 5
  4. 6