数据结构习题排序技术

上传人:pu****.1 文档编号:459792692 上传时间:2023-11-10 格式:DOC 页数:16 大小:303.01KB
返回 下载 相关 举报
数据结构习题排序技术_第1页
第1页 / 共16页
数据结构习题排序技术_第2页
第2页 / 共16页
数据结构习题排序技术_第3页
第3页 / 共16页
数据结构习题排序技术_第4页
第4页 / 共16页
数据结构习题排序技术_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《数据结构习题排序技术》由会员分享,可在线阅读,更多相关《数据结构习题排序技术(16页珍藏版)》请在金锄头文库上搜索。

1、第 8 章 排序技术课后习题讲解1. 填空题 排序的主要目的是为了以后对已排序的数据元素进行( )。【解答】查找【分析】对已排序的记录序列进行查找通常能提高查找效率。 对n个元素进行起泡排序,在( )情况下比较的次数最少,其比较次数为( )。在( )情况下比较次数最多,其比较次数为( )。【解答】正序,n-1,反序,n(n-1)/2 对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行直接插入排序,当把第7个记录60插入到有序表时,为寻找插入位置需比较( )次。【解答】3【分析】当把第7个记录60插入到有序表时,该有序表中有2个记录大于60。 对一组记录(54

2、, 38, 96, 23, 15, 72, 60, 45, 83)进行快速排序,在递归调用中使用的栈所能达到的最大深度为( )。【解答】3 对n个待排序记录序列进行快速排序,所需要的最好时间是( ),最坏时间是( )。【解答】O(nlog2n),O(n2) 利用简单选择排序对n个记录进行排序,最坏情况下,记录交换的次数为( )。【解答】n-1 如果要将序列(50,16,23,68,94,70,73)建成堆,只需把16与( )交换。【解答】50 对于键值序列(12,13,11,18,60,15,7,18,25,100),用筛选法建堆,必须从键值为( )的结点开始。【解答】60【分析】60是该键值

3、序列对应的完全二叉树中最后一个分支结点。2. 选择题 下述排序方法中,比较次数与待排序记录的初始状态无关的是( )。 A插入排序和快速排序 B归并排序和快速排序C选择排序和归并排序 D插入排序和归并排序【解答】C【分析】选择排序在最好、最坏、平均情况下的时间性能均为O(n2),归并排序在最好、最坏、平均情况下的时间性能均为O(nlog2n)。 下列序列中,( )是执行第一趟快速排序的结果。A da,ax,eb,de,bb ff ha,gc B cd,eb,ax,da ff ha,gc,bbC gc,ax,eb,cd,bb ff da,ha D ax,bb,cd,da ff eb,gc,ha【解

4、答】A【分析】此题需要按字典序比较,前半区间中的所有元素都应小于ff,后半区间中的所有元素都应大于ff。 对初始状态为递增有序的序列进行排序,最省时间的是( ),最费时间的是( )。已知待排序序列中每个元素距其最终位置不远,则采用( )方法最节省时间。A 堆排序 B插入排序 C快速排序 D 直接选择排序【解答】B,C,B【分析】待排序序列中每个元素距其最终位置不远意味着该序列基本有序。 堆的形状是一棵( )。A二叉排序树 B满二叉树 C完全二叉树 D 判定树【解答】C【分析】从逻辑结构的角度来看,堆实际上是一种完全二叉树的结构。 当待排序序列基本有序或个数较小的情况下,最佳的内部排序方法是(

5、),就平均时间而言,( )最佳。A 直接插入排序 B 起泡排序 C简单选择排序 D快速排序 【解答】A,D 设有5000个元素,希望用最快的速度挑选出前10个最大的,采用( )方法最好。A快速排序 B堆排序 C希尔排序 D 归并排序 【解答】B【分析】堆排序不必将整个序列排序即可确定前若干个最大(或最小)元素。 设要将序列(Q,H,C,Y,P,A,M,S,R,D,F,X)中的关键码按升序排列,则( )是起泡排序一趟扫描的结果,( )是增量为4的希尔排序一趟扫描的结果,( )二路归并排序一趟扫描的结果,( )是以第一个元素为轴值的快速排序一趟扫描的结果,( )是堆排序初始建堆的结果。A(F,H,

6、C,D,P,A,M,Q,R,S,Y,X) B(P,A,C,S,Q,D,F,X,R,H,M,Y) C(A,D,C,R,F,Q,M,S,Y,P,H,X) D(H,C,Q,P,A,M,S,R,D,F,X,Y) E(H,Q,C,Y,A,P,M,S,D,R,F,X)【解答】D,B,E,A,C【分析】此题需要按字典序比较,并且需要掌握各种排序方法的执行过程。 排序的方法有很多种,( )法从未排序序列中依次取出元素,与已排序序列中的元素作比较,将其放入已排序序列的正确位置上。( )法从未排序序列中挑选元素,并将其依次放入已排序序列的一端。交换排序是对序列中元素进行一系列比较,当被比较的两元素为逆序时,进行交

7、换;( )和( )是基于这类方法的两种排序方法,而( )是比( )效率更高的方法;( )法是基于选择排序的一种方法,是完全二叉树结构的一个重要应用。A 选择排序 B 快速排序 C 插入排序 D 起泡排序 E 归并排序 F 堆排序 【解答】C,A,D,B,B,D,F 快速排序在( )情况下最不利于发挥其长处。A 待排序的数据量太大 B 待排序的数据中含有多个相同值C 待排序的数据已基本有序 D 待排序的数据数量为奇数【解答】C【分析】快速排序等改进的排序方法均适用于待排序数据量较大的情况,各种排序方法对待排序的数据中是否含有多个相同值,待排序的数据数量为奇数或偶数都没有影响。 ( )方法是从未排

8、序序列中挑选元素,并将其放入已排序序列的一端。A 归并排序 B 插入排序 C 快速排序 D 选择排序【解答】D3. 判断题 如果某种排序算法是不稳定的,则该排序方法没有实际应用价值。【解答】错。一种排序算法适合于某种特定的数据环境,有时对排序的稳定性没有要求。 当待排序的元素很大时,为了交换元素的位置,移动元素要占用较多的时间,这是影响时间复杂性的主要因素。【解答】对。此时着重考虑元素的移动次数。 对n个记录的集合进行快速排序,所需要的附加空间是(n)。【解答】错。最坏情况下是(n)。 堆排序所需的时间与待排序的记录个数无关。【解答】错。堆排序最好、最坏及平均时间均为(nlog2n),是待排序

9、的记录个数n的函数。一般来说,待排序的记录个数越多,排序所消耗的时间也就越多。 设有键值序列(k1, k2, , kn),当in/2时,任何一个子序列(ki, ki+1, , kn)一定是堆。【解答】对。当in/2时,ki, ki+1, , kn 均是叶子结点,所以一定是堆。4已知数据序列为(12,5,9,20,6,31,24),对该数据序列进行排序,写出插入排序、起泡排序、快速排序、简单选择排序、堆排序以及二路归并排序每趟的结果。【解答】用上述排序方法的每趟结果如下:5对n=7,给出快速排序一个最好情况和最坏情况的初始排列的实例。【解答】最好情况:4,7,5,6,3,1,2最坏情况:7,6,

10、5,4,3,2,16判别下列序列是否为堆,如不是,按照堆排序思想把它调整为堆,用图表示建堆的过程。(1,5,7,25,21,8,8,42)(3,9,5,8,4,17,21,6)【解答】序列是堆,序列不是堆,调整为堆(假设为大根堆)的过程如图8-5所示。7已知下列各种初始状态(长度为n)的元素,试问当利用直接插入排序进行排序时,至少需要进行多少次比较(要求排序后的记录由小到大顺序排列)? 关键码从小到大有序(key1 key2 key2 keyn)。 奇数关键码顺序有序,偶数关键码顺序有序(key1 key3 前半部分元素按关键码顺序有序,后半部分元素按关键码顺序有序,即:(key1 key2

11、keym,keym+1 keym+2 【解答】依题意,最好情况下的比较次数即为最少比较次数。 插入第i(2in)个元素的比较次数为1,因此总的比较次数为:1+1+1=n-1 插入第i(2in)个元素的比较次数为i,因此总的比较次数为:2+3+n=(n-1)(n+2)/2 比较次数最少的情况是所有记录关键码按升序排列,总的比较次数为:n-1 在后半部分元素的关键码均大于前半部分元素的关键码时需要的比较次数最少,总的比较次数为:n-18算法设计 直接插入排序中寻找插入位置的操作可以通过折半查找来实现。据此写一个改进的插入排序的算法。【解答】插入排序的基本思想是:每趟从无序区中取出一个元素,再按键值

12、大小插入到有序区中。对于有序区,当然可以采用折半查找来确定插入位置。具体算法如下:mosimage 设待排序的记录序列用单链表作存储结构,试写出直接插入排序算法。【解答】本算法采用的存储结构是带头结点的单链表。首先找到元素的插入位置,然后把元素从链表中原位置删除,再插入到相应的位置处。具体算法如下: 设待排序的记录序列用单链表作存储结构,试写出简单选择排序算法。【解答】参见8.2.2。 对给定的序号j(1jn),要求在无序记录A1An中找到按关键码从小到大排在第j位上的记录,试利用快速排序的划分思想设计算法实现上述查找。【解答】本算法不要求将整个记录进行排序,而只进行查找第j个记录。 写出快速

13、排序的非递归调用算法。【解答】先调用划分函数Quickpass(划分函数同教材),以确定中间位置,然后再借助栈分别对中间元素的左、右两边的区域进行快速排序。 一个线性表中的元素为正整数或负整数。设计算法将正整数和负整数分开,使线性表的前一半为负整数,后一半为正整数。不要求对这些元素排序,但要求尽量减少比较次数。【解答】本题的基本思想是:先设置好上、下界和轴值,然后分别从线性表两端查找正数和负数,找到后进行交换,直到上下界相遇。算法如下: 已知(k1, k2, , kn)是堆,试写一算法将(k1, k2, , kn, kn+1)调整为堆。【解答】增加一个元素应从叶子向根方向调整,假设调整为小根堆

14、。 给定n个记录的有序序列An和m 个记录的有序序列Bm,将它们归并为一个有序序列,存放在Cm+n中,试写出这一算法。【解答】采用二路归并排序中一次归并的思想,设三个参数i、j和k分别指向两个待归并的有序序列和最终有序序列的当前记录,初始时i、j分别指向两个有序 序列的第一个记录,即i=1,j=1,k指向存放归并结果的位置,即k=1。然后,比较i和j所指记录的关键码,取出较小者作为归并结果存入k所指位置, 直至两个有序序列之一的所有记录都取完,再将另一个有序序列的剩余记录顺序送到归并后的有序序列中。6. 用直接插入排序对下面四个序列进行由小到大排序,元素比较次数最少的是( )。 A 94, 3

15、2, 40, 90, 80, 46, 21, 69 B 21, 32, 46, 40, 80, 69, 90, 94C 32, 40, 21, 46, 69, 94, 90, 80 D 90, 69, 80, 46, 21, 32, 94, 40【解答】B7. 对数列(25, 84, 21, 47, 15, 27, 68, 35, 20)进行排序,元素序列的变化情况如下: 25, 84, 21, 47, 15, 27, 68, 35, 20 20, 15, 21, 25, 47, 27, 68, 35, 84 15, 20, 21, 25, 35, 27, 47, 68, 84 15, 20, 21, 25, 27, 35, 47, 68, 84则采用的排序方法是( )。A 希尔排序 B 简单选择排

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号