=k;
5t:
=a[i];a[i]:
=a[j];a[j];=t
]
END;
24.设待排序的关键码分别为28,13,72,85,39,41,6,20。
按二分法插入排序算法已使前七个记录有序,中间结果如下:
【山东工业大学1996七(10分)】
613283941728520
i=1m=4r=7
试在此基础上,沿用上述表达方式,给出继续采用二分法插入第八个记录的比较过程。
(1)使用二分法插入排序所要进行的比较次数,是否与待排序的记录的初始状态有关?
(2)在一些特殊情况下,二分法插入排序比直接插入排序要执行更多的比较。
这句话对吗?
25.算法模拟(15分,问题1,2各6分,问题3占3分)
设待排序的记录共7个,排序码分别为8,3,2,5,9,1,6。
(1)用直接插入排序。
试以排序码序列的变化描述形式说明排序全过程(动态过程)要求按递减顺序排序。
(2)用直接选择排序。
试以排序码序列的变化描述形式说明排序全过程(动态过程)要求按递减顺序排序。
(3)直接插入排序算法和直接选择排序算法的稳定性如何?
【山东工业大学1997四(15分)】
26.在执行某个排序算法过程中,出现了排序关键字朝着最终排序序列相反的方向的移动,从而认为该算法是不稳定的。
这种说法对么?
为什么?
【东北大学2001一、1(4分)】
类似本题的另外叙述有:
(1)(冒泡)排序过程中,有的关键字在某趟排序中可能朝着与最终排序相反的方向移动,试举例说明之。
快速排序过程中有没有这种现象?
【东北大学2000一、5(4分)】
27.对下面数据表,写出采用SHELL排序算法排序的每一趟的结果,并标出数据移动情况。
(125,11,22,34,15,44,76,66,100,8,14,20,2,5,1)。
【合肥工业大学1999四、4(5分)】
28.快速排序的最大递归深度是多少?
最小递归深度是多少?
【清华大学1999一、1(2分)】
29.已知某文件的记录关键字集为{50,10,50,40,45,85,80},选择一种从平均性能而言是最佳的排序方法进行排序,且说明其稳定性。
【西安电子科技大学1996五(10分)】
30.在内排序算法中,待排序的数据已基本有序时,花费时间反而最多的排序方法是哪种?
【西安电子科技大学2000计应用一、1(5分)】
31.我们知道,对于n个元素组成的线性表进行快速排序时,所需进行的比较次数与这n个元素的初始排序有关。
问:
【西安电子科技大学2001计应用五(12分)】【中国矿业大学2000六(10分)】
(1)当n=7时,在最好情况下需进行多少次比较?
请说明理由。
(2)当n=7时,给出一个最好情况的初始排序的实例。
(3)当n=7时,在最坏情况下需进行多少次比较?
请说明理由。
(4)当n=7时,给出一个最坏情况的初始排序的实例。
类似本题的另外叙述有:
(1)快速排序(quicksorting)的效率与原始序列有关,现用快速排序算法对关键字分别为1—15的15个元素进行排序
①在最好情况下要进行几遍比较,给出一种原始序列实例;
②在最坏情况下要进行几遍比较,给出一种原始序列实例。
【浙江大学1995七(12分)】
(2)对N个元素组成的线性表进行快速排序时,所需进行的比较次数依赖于这N个元素的初始排列。
对N=7,给出快速排序的一个最好情况的初始排列实例(7个元素可取自集合{l,2,3,4,5,6,7})。
【西北大学2000二、5(5分)】
32.有一随机数组(25,84,21,46,13,27,68,35,20),现采用某种方法对它们进行排序,其每趟排序结果如下,则该排序方法是什么?
【武汉交通科技大学1996二、5(6分)】
初始:
25,84,21,46,13,27,68,35,20第一趟:
20,13,21,25,46,27,68,35,84
第二趟:
13,20,21,25,35,27,46,68,84第三趟:
13,20,21,25,27,35,46,68,84
33.快速排序是在所有情况下,排序速度最快吗?
为什么?
在何种情况下使用此排序法最好?
【北京邮电大学1993一、1(5分)】
34.对给定文件(28,07,39,10,65,14,61,17,50,21)选择第一个元素28进行划分,写出其快速排序第一遍的排序过程。
【厦门大学1998七、1(8分)】
类似本题的另外叙述有:
(1)对下列关键字序列进行快速排序(从小至大)(48,38,65,95,73,13,27,50)要求给出快速排序的算法思想,并画出排序过程示意图。
【南京航空航天大学1999五(10分)】
(2)设记录的关键字集合K={23,9,39,5,68,12,62,48,33},给定的增量序列D={4,2,1},请写出对K按“SHELL方法”排序时各趟排序结束时的结果;若每次以表的第一元素为基准(或枢轴),写出对K按“快速排序方法”排序时,各趟排序结束时的结果。
【北京科技大学1999七(10分)2000七(10分)】
35.下面是一改进了的快速分类算法
1.PROCEDUREqsort1(VARlist:
afile;m,n:
integer);
2(设list[m].key3VARi,j,k:
integer;
4BEGIN
5WHILEm6BEGIN
7i:
=m;j:
=n+1;k:
=list[m].key;
8REPEAT
9REPEATi:
=i+1UNTILlist[i].key>=k;
10REPEATj:
=j-1UNTILlist[j].key<=k;
11IFi12UNTILi>=j;
13interchange(list[m],list[j]);
14IFn-j>=j-m
15THENBEGINqsort1(list,m,j+1);m:
=j+1;END
16ELSEBEGINqsort1(list,j+1,n);n:
=j-1;END
17END;(OFWHILE)
18END.
问:
(1)将第9、10行中的>=,<=分别改成>,<行吗?
为什么?
(5分)
(2)该排序算法稳定否?
举例说明(5分)
(3)对输入文件(22,3,30,4,60,11,58,18,40,16),列表表示该文件在每次调用qsort1时的状态及相应m、n值。
(5分)
(4)若输入文件有n个记录,简要说明支持qsort1递归所需最大栈空间用量(设一层递归用一个单位栈空间)。
(5分)【东南大学1998四(20分)】
36.如果只要找出一个具有n个元素的集合的第k(1≤k≤n)个最小元素,你所学过的排序方法中哪种最适合?
给出实现的思想。
【北方交通大学1998六(10分)】
37.已知快速排序和归并排序的算法分别如下所示:
PROCEDUREqksort(VARr:
listtype;s,t:
integer);
BEGIN
IFsqkpass(r,s,t,k);
qksort(r,s,k-1);
qksortd(r,k+1,t)
END
END;
PROCEDUREmergesort(VARr,r1:
listtype;s,t:
integer);
BEGIN
IFs=tTHENr1[s]:
=r[s]ELSE
BEGIN
MERGESORT(r,r2,s,(s+t)DIV2);
MERGESORT(r,r2,(S+t)DIV2+1,t);
MERGE(r2,s,(s+t)DIV2,t,rl)
END
END;
若对下列关键字序列进行快速排序和归并排序,分别写出三次调用过程qkpass和过程merge后的结果。
(98,36,77,42,23,65,84,10,59,37,61,18)。
【清华大学1996六】
38.已知一关键码序列为:
3,87,12,61,70,97,26,45。
试根据堆排序原理,填写完整下示各步骤结果。
【首都经贸大学1998二、7(10分)】
建立堆结构:
_____________
交换与调整:
(1)877026614512397;
(2)____________________;
(3)614526312708797;(4)____________________;
(5)261234561708797;(6)____________________;
(7)312264561708797;
39.判断下列序列是否是堆(可以是小堆,也可以是大堆,若不是堆,请将它们调整为堆)。
(1)100,85,98,77,80,60,82,40,20,10,66
(2)100,98,85,82,80,77,66,60,40,20,10
(3)100,85,40,77,80,60,66,98,82,10,20
(4)10,20,40,60,66,77,80,82,85,98,100
【山东大学1998四(5分)】【山东工业大学2000四(5分)】
类似本题的另外叙述有:
(1)判别以下序列是否是堆(大顶堆),如果不是,则把它调整为堆。
(12,70,33,65,24,56,48,92,86,33)【燕山大学2001四、1(8分)】
(2)判断下面的每个结点序列是否表示一个堆,如果不是堆,请把它调整成堆。
①100,90,80,60,85,75,20,25,10,70,65,50
②100,70,50,20,90,75,60,25,10,85,65,80【复旦大学1997二(8分)】
(3)判别下列两个序列是否为堆,若不是,按照对序列建堆的思想把它调整为堆,用图表示建堆的过程。
【厦门大学2001二、1(24%/3分)】
①(1,5,7,20,18,8,8,40)②(18,9,5,8,4,17,21,6)
(4)根据给定的关键字集合(20,15,40,35,45,25,50,30,10)顺序输入
①构造一棵完全二叉树;②画出整理好的一棵堆树;③画出一棵输出一个排序记录后的二叉树;
④画出重新调整好的堆树。
【大连海事大学2001六(5分)】
40.全国有10000人参加物理竞赛,只录取成绩优异的前10名,并将他们从高分到低分输出。
而对落选的其他考生,不需排出名次,问此种情况下,用何种排序方法速度最快?
为什么?
【北京邮电大学1996一、3(4分)】
类似本题的另外叙述有:
(1)如果在1000000个记录中找出2个最小的记录,你认为采用什么样的排序方法所需的关键字比较次数最少?
共计多少次?
【厦门大学1999三、4】
41.已知待排序的序列为(503,87,512,61,908,170,897,275,653,462),试完成下列各题。
(1)根据以上序列建立一个堆(画出第一步和最后堆的结果图),希望先输出最小值。
(2)输出最小值后,如何得到次小值。
(并画出相应结果图)【同济大学2001二(10分)】
类似本题的另外叙述有:
(1)对于输入关键字序列48,70,65,33,24,56,12,92进行:
①建立堆排序的初始堆(小顶堆),要求画出主要过程。
②建一棵平衡二叉树,画出过程(至少每次调整有一张,标出最小不平衡子树的根)。
【北京工业大学2001二、5(6分)】
(2)简要叙述堆排序的算法思想。
并对如下关键字序列(3,8,85,12,37,50)按堆排序算法进行从小到大排序,要求画出排序全过程的示意图。
【南京航空航天大学1997五(10分)】
(3)设记录关键字集合K={28,17,85,96,75,8,42,65,04}
①写出对K进行“二路归并”且按关键字递增次序排序时,各趟排序的结果;
②如何将K建成一个完全二叉树形式的最小堆;【北京科技大学1997七(10分)】
42.设有n个无序元素,按非递减次序排序,但只想得到前面长度为k的部分序列,其中n>>k,最好采用什么排序方法?
为什么?
如果有这样一个序列{59,11,26,34,17,91,25},得到的部分序列是:
{11,17,25},对于该例使用所选择的方法实现时,共执行多少次比较?
【东北大学2002一、4(3分)】
类似本题的另外叙述有:
(1)如果只想得到一个序列中第K个最小元素之前的部分排序序列,那么最好应采用哪种排序算法?
为什么?
如由这样一个序列:
57,40,38,11,13,34,48,75,25,6,19,9,7得到其第四个最小元素之前的部分排序序列:
6,7,9,11,…用你选用算法实现时,共执行多少次比较?
【北方交通大学1994七(16分)】
43.写出用堆排序算法对文件F=(12,3,15,30,9,28)进行排序时,初始堆及以后每挑好一个元素重新调整后堆的状态,并指出这里的堆和败者树的一个主要区别。
【东南大学1998二(8分)】
44.请回答下列关于堆(Heap)的一些问题:
【清华大学2000五(12分)】
(1)(4分)堆的存储表示是顺序的,还是链接的?
(2)(4分)设有一个最小堆,即堆中任意结点的关键码均大于它的左子女和右子女的关键码。
其具有最大值的元素可能在什么地方?
(3)(4分)对n个元素进行初始建堆的过程中,最多做多少次数据比较(不用大O表示法)?
45.解答问题
(1)(6分)设某文件中待排序记录的排序码为72,73,71,23,94,16,05,68,试画图表示出树形选择排序(增序)过程的前三步。
(2)(4分)试说明树形选择排序的基本思想。
(3)(2分)树形选择排序与直接选择排序相比较,优缺点是什么?
(4)(3分)堆排序是如何改进树形排序方法的?
优点是什