1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。第 8 章 排序技术课后习题讲解1. 填空题 排序的主要目的是为了以后对已排序的数据元素进行 ( )。【解答】查找【分析】对已排序的记录序列进行查找一般能提高查找效率。 对 n 个元素进行起泡排序 ,在( )情况下比较的次数最少 ,其比较次数为 ( ) 。在 ( ) 情况下比较次数最多 , 其比较次数为 ( ) 。【解答】正序 , n-1, 反序 , n(n-1)/2 对一组记录 ( 54, 38, 96,23, 15,72, 60, 45, 83) 进行直接插入排序 , 当把第 7 个记录 60 插入到有序表时 , 为寻找插入位置
2、需比较 ( ) 次。【解答】 3【分析】当把第 7 个记录 60 插入到有序表时 ,该有序表中有 2 个记录大于60。 对一组记录 ( 54, 38, 96,23, 15,72, 60, 45, 83)进行快速排序 ,在递归调用中使用的栈所能达到的最大深度为 ( )。【解答】 3 对 n 个待排序记录序列进行快速排序 , 所需要的最好时间是 ( ) , 最坏时间是 ( ) 。【解答】 O(nlog2n), O(n2) 利用简单选择排序对 n 个记录进行排序 , 最坏情况下 , 记录交换的次数为 ( ) 。【解答】 n-1 如果要将序列 ( 50, 16, 23, 68, 94,70, 73)建
3、成堆 ,只需把 16 与( )交换。【解答】 50 对于键值序列 ( 12, 13, 11, 18, 60,15, 7, 18, 25, 100) ,用筛选法建堆 , 必须从键值为 ( ) 的结点开始。【解答】 60【分析】 60 是该键值序列对应的完全二叉树中最后一个分支结点。2. 选择题 下述排序方法中 ,比较次数与待排序记录的初始状态无关的是( )。A 插入排序和快速排序B 归并排序和资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。快速排序C选择排序和归并排序D 插入排序和归并排序【解答】 C【分析】选择排序在最好、 最坏、 平均情况下的时间性能均为 O(n2), 归并排序
4、在最好、 最坏、 平均情况下的时间性能均为O(nlog2n) 。 下列序列中 , ( ) 是执行第一趟快速排序的结果。A da, ax, eb, de, bb ff ha, gcB cd, eb, ax, da ff ha, gc, bbC gc, ax, eb, cd, bb ff da, haD ax, bb, cd, da ff eb, gc, ha【解答】 A【分析】此题需要按字典序比较 , 前半区间中的所有元素都应小于 ff, 后半区间中的所有元素都应大于 ff 。 对初始状态为递增有序的序列进行排序 , 最省时间的是 ( ) , 最费时间的是 ( ) 。已知待排序序列中每个元素距其
5、最终位置不远 , 则采用 ( ) 方法最节省时间。A 堆排序 B 插入排序 C 快速排序 D直接选择排序【解答】 B, C, B【分析】待排序序列中每个元素距其最终位置不远意味着该序列基本有序。 堆的形状是一棵 ( )。A 二叉排序树 B 满二叉树 C 完全二叉树 D 判定树【解答】 C【分析】从逻辑结构的角度来看 , 堆实际上是一种完全二叉树的结构。 当待排序序列基本有序或个数较小的情况下 , 最佳的内部排序方法是( ) ,就平均时间而言 , ( )最佳。A 直接插入排序 B 起泡排序 C 简单选择排序 D 快速排序【解答】 A, D 设有 5000 个元素 , 希望用最快的速度挑选出前 1
6、0 个最大的 , 采用 ( ) 方法最好。A快速排序 B 堆排序 C 希尔排序 D 归并排序【解答】 B【分析】堆排序不必将整个序列排序即可确定前若干个最大 (或最小 )元素。资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 设要将序列 ( Q, H, C, Y, P, A, M,排序序列中挑选元素 ,并将其依次放S, R, D, F, X)中的关键码按升序排入已排序序列的一端。交换排序是对列 ,则( )是起泡排序一趟扫描的序列中元素进行一系列比较 , 当被比结果 , ( )是增量为 4的希尔排序一较的两元素为逆序时 ,进行交换 ; ( )趟扫描的结果 , ( )二路归并排序一和
7、( )是基于这类方法的两种排序趟扫描的结果 , ( )是以第一个元素方法 ,而( )是比 ( )效率更高的为轴值的快速排序一趟扫描的结果,方法 ; ( )法是基于选择排序的一种( )是堆排序初始建堆的结果。方法 ,是完全二叉树结构的一个重要A( F, H, C, D, P, A, M, Q, R, S, Y,应用。X)A 选择排序 B 快速排序 C 插入排序B( P, A, C, S, Q, D, F, X, R, H, M,D 起泡排序 E 归并排序 F 堆排序Y)【解答】 C, A, D, B, B, D, FC( A, D, C, R, F, Q, M, S, Y, P, H, 快速排序
8、在 ( ) 情况下最不利于X)D( H, C, Q, P, A, M, S, R, D, F, X,发挥其长处。A 待排序的数据量太大 B 待排序的Y)数据中含有多个相同值E( H, Q, C, Y, A, P, M, S, D, R, F,C 待排序的数据已基本有序 D 待排X)【解答】 D, B, E, A, C序的数据数量为奇数【解答】 C【分析】此题需要按字典序比较, 而且需要掌握各种排序方法的执行过【分析】快速排序等改进的排序方法均适用于待排序数据量较大的情况 ,程。各种排序方法对待排序的数据中是否 排序的方法有很多种 , ( )法从含有多个相同值 , 待排序的数据数量未排序序列中依
9、次取出元素 , 与已排为奇数或偶数都没有影响。序序列中的元素作比较 ,将其放入已排序序列的正确位置上。( ) 法从未资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 ( ) 方法是从未排序序列中挑 元素 , 并将其放入已排序序列的一端。A 并排序 B 插入排序 C 快速排序D 排序【解答】 D3. 判断 如果某种排序算法是不 定的 , 排序方法没有 用价 。【解答】 。一种排序算法适合于某种特定的数据 境 , 有 排序的 定性没有要求。 当待排序的元素很大 , 了交换元素的位置 , 移 元素要占用 多的 , 是影响 复 性的主要因素。【解答】 。此 着重考 元素的移 次数。 对
10、n 个 的集合 行快速排序 , 所需要的附加空 是 (n) 。【解答】 。最坏情况下是(n) 。 堆排序所需的 与待排序的 个数无关。【解答】 。堆排序最好、最坏及平均 均 (nlog2n), 是待排序的 个数 n 的函数。一般来 , 待排序的 个数越多 , 排序所消耗的 也就越多。 有 序列 ( k1, k2, kn) ,当 in/2 时 , 任何一个子序列 ( ki, ki+1, , kn) 一定是堆。【解答】 。当 in/2 时, ki, ki+1, , kn 均是叶子 点 , 因此一定是堆。4已知数据序列 (12,5, 9, 20, 6,31, 24), 数据序列 行排序 ,写出插入排
11、序、起泡排序、快速排序、 排序、堆排序以及二路 并排序每趟的 果。【解答】用上述排序方法的每趟 果如下 :资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。5 n=7, 出快速排序一个最好情况和最坏情况的初始排列的 例。【解答】最好情况 : 4, 7, 5, 6, 3, 1,2最坏情况 : 7, 6, 5, 4, 3, 2, 16判 下列序列是否 堆,如不是 ,按照堆排序思想把它 整 堆,用 表示建堆的 程。 ( 1, 5, 7, 25, 21, 8, 8, 42) ( 3, 9, 5, 8, 4, 17, 21, 6)【解答】序列是堆 ,序列不是堆 , 整 堆 ( 假 大根堆 )
12、 的 程如图 8-5 所示。7已知下列各种初始状 ( 度 n)的元素 , 当利用直接插入排序 行排序 ,至少需要 行多少次比 ( 要求排序后的 由小到大 序排列 ) ? 关 从小到大有序 ( key1key2 key2 keyn)。 奇数关 序有序 ,偶数关 序有序 ( key1 key3 前半部分元素按关 序有序 ,后半部分元素按关 序有序 ,即 :( key1 key2 keym, keym+1keym+2 【解答】依 意 ,最好情况下的比 次数即 最少比 次数。 插入第 i(2i n) 个元素的比 资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。次数 1,因此 的比 次数
13、:1+1+ +1=n-1 插入第 i( 2i n) 个元素的比 次数 i, 因此 的比 次数 : 2+3+n=(n-1)(n+2)/2 比 次数最少的情况是所有 关 按升序排列, 的比 次数 :n-1 在后半部分元素的关 均大于前半部分元素的关 需要的比 次数最少 , 的比 次数 :n-18算法 直接插入排序中 找插入位置的操作能 折半 找来 。据此写一个改 的插入排序的算法。【解答】插入排序的基本思想是:每趟从无序区中取出一个元素,再按 大小插入到有序区中。 于有序区,当然能 采用折半 找来确定插入位置。具体算法如下 :mosimage 待排序的 序列用 表作存 构 , 写出直接插入排序算法。【解答】本算法采用的存 构是 点的 表。首先找到元素的插入位置 , 然后把元素从 表中原位置 除 , 再插入到相 的位置 。具体算法如下 : 待排序的 序列用 表作存 构 , 写出 排序算法。【解答】参 8.2.2 。 定的序号 j( 1j n) , 要求在无序 A1An 中找到按关 从小到大排在第 j 位上的 , 试利用快速排序的划分思想 算法 上述 找。