对一组数据(84,47,25,15,21)排序,数据的排列次序在排序的过程中的变化为

(1) 84 47 25 15 21 (2) 15 47 25 84 21
(3) 15 21 25 84 47 (4) 15 21 25 47 84

则采用的排序是 ( 选择)。


快速排序方法在( 要排序的数据已基本有序)情况下最不利于发挥其长处。

下列排序算法中,在待排序数据已有序时,花费时间反而最多的是(快速 )排序。


数据表中有10000个元素,如果仅要求求出其中最大的10个元素,则采用( 堆排序)算法最节省时间。


下列排序算法中, (归并 )排序在一趟结束后不一定能选出一个元素放在其最终位置上。


堆分为大顶堆和小顶堆,大顶堆要求每个节点的值都大于或等于其子节点的值,小顶堆要求每个节点的值都小于或等于其子节点的值 。将序列看成完全二叉树形式,按层次遍历顺序存储,对于完全二叉树中节点i,其左孩子节点为2i+1,右孩子节点为2i+2(i从0开始计数)。


引入平衡因子(Balance Factor,简称 BF)的概念来衡量,即某节点的平衡因子 = 该节点左子树高度 – 该节点右子树高度 。在平衡二叉树中,任意节点的平衡因子只能是 – 1、0、1 。


平衡二叉树插入节点后需通过旋转操作维持平衡。
插入节点:按照二叉排序树插入规则,23 比 20 大,比 30 小,比 25 小,应插入到 25 的左子树位置,此时以 30 为根的子树平衡因子变为 2(左子树高度 – 右子树高度),失去平衡。
调整平衡:这属于 “左 – 左” 型不平衡(新插入节点在失衡节点左孩子的左子树),需进行右旋操作。以 25 为轴进行右旋,30 节点下移,25 节点成为新的根节点。经过调整后,根中的关键字变为 25 。 所以答案是 D。



下列数据结构中, 不适合直接使用折半查找的是( 1234)。
I. 有序链表 II. 无序数组 III. 有序静态链表 IV. 无序静态链表


下列因素中,影响散列(哈希)方法平均查找长度的是( 123).
I. 装填因子 II. 散列函数 III. 冲突解决策略


对数据进行排序时,若采用直接插入排序而不采用快速排序,则可能的原因是( 1234)
I. 大部分元素已有序 II. 待排序元素数量很少
III. 要求空间复杂度为O(1) IV. 要求排序算法是稳定的


对含 9 个关键字的初始序列进行排序,若序列的变化情况如下表所示,则下列排序算法中,采用的是(希尔排序 ).
初始序列: 5, 25, 40, 30, 10, 20, 45, 15, 35
第 1 趟排序后的序列: 5, 10, 20, 30, 15, 35, 45, 25, 40
第 2 趟排序后的序列: 5, 10, 15, 25, 20, 30, 40, 35, 45

希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

若增量为3,将序列分成三组:

  • 第一组:9,13,20
  • 第二组:1,7,23
  • 第三组:4,8,15

对这三组分别进行直接插入排序:

  • 第一组9,13,20排序后仍为9,13,20 。
  • 第二组1,7,23排序后仍为1,7,23 。
  • 第三组4,8,15排序后仍为4,8,15 。

重新组合后可以得到9,1,4,13,7,8,20,23,15 ,符合题目所给的第一趟排序结果,所以选项 B 正确。


为实现快速排序算法,待排序序列宜采用的存储方式是顺序存储


快速排序的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序。

分类: 未分类