简答 排序.docx

上传人:b****5 文档编号:29051674 上传时间:2023-07-20 格式:DOCX 页数:48 大小:216.84KB
下载 相关 举报
简答 排序.docx_第1页
第1页 / 共48页
简答 排序.docx_第2页
第2页 / 共48页
简答 排序.docx_第3页
第3页 / 共48页
简答 排序.docx_第4页
第4页 / 共48页
简答 排序.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

简答 排序.docx

《简答 排序.docx》由会员分享,可在线阅读,更多相关《简答 排序.docx(48页珍藏版)》请在冰豆网上搜索。

简答 排序.docx

简答排序

第10章排序

四、应用题

1.内部排序(名词解释)。

【燕山大学1999一、5(2分)】

2.在各种排序方法中,哪些是稳定的?

哪些是不稳定的?

并为每一种不稳定的排序方法举出一个不稳定的实例。

【大连海事大学1996七、3(4分)】

类似本题的另外叙述有:

(1)举例说明堆排序是否为稳定排序法.【西安电子科技大学1996三、4(5分)】

(2)选择排序算法是否稳定?

为什么?

【燕山大学2001三、3(5分)】

(3)举例分析堆排序方法是否稳定。

【北京邮电大学1993二、3(6分)】

(4)堆排序是稳定排序吗?

举例说明。

【东南大学1996一、5(6分)】

(5)试举例分析堆排序法是否稳定。

【东南大学1999一、5(5分)】

(6)树型选择排序通常采用顺序存储结构,①试指出n个元素的原始序列一般如何在该存储结构中存放(起始存储位置,次序),请说明理由。

②讨论树形选择排序的稳定性。

若稳定,须说明理由;不稳定,须举反例,并尝试找出使它稳定的方法。

【北京工业大学1999七(10分)】

3.在执行某种排序算法的过程中出现了排序码朝着最终排序序列相反的方向移动,从而认为该排序算法是不稳定的,这种说法对吗?

为什么?

【燕山大学2001三、4(5分)】

4.设有5个互不相同的元素a、b、c、d、e,能否通过7次比较就将其排好序?

如果能,请列出其比较过程;如果不能,则说明原因。

【北方交通大学1996五(10分)】

5.对一个由n个关键字不同的记录构成的序列,能否用比2n-3少的次数选出该序列中关键字取最大值和关键字取最小值的记录?

请说明如何实现?

在最坏的情况下至少进行多少次比较?

【东南大学2000一、5(8分)】

6.利用比较的方法进行排序,在最坏的情况下,能达到的最好时间复杂性是什么?

请给出详细证明。

【上海交通大学2000六(8分)】

7.以下概念的区别:

拓扑排序与冒泡排序。

【大连海事大学1996三、2(3)(2分)】

8.简述直接插入排序,简单选择排序,2-路归并排序的基本思想以及在时间复杂度和排序稳定性上的差别。

【西北工业大学1999二(8分)】

9.快速排序,堆排序和希尔排序是时间性能较好的排序方法,也是稳定的排序方法。

判断正误并改错。

【燕山大学1998二、5(2分)】

10.设LS是一个线性表,LS=(a1,a2,…,an),若采用顺序存储结构,则在等概率的前提下,插入一个元素需要平均移动的元素个数是多少?

若元素插在ai与ai+1之间(0<=i<=n-1)的概率为(n-i)/(n*(n+1)/2),则插入一个元素需要平均移动的元素个数又是多少?

【西安电子科技大学2001软件二、3(5分)】

11.对于堆积排序法,快速排序法和归并排序法,若仅从节省存储空间考虑,则应该首先选取其中哪种方法?

其次选取哪种方法?

若仅考虑排序结果的稳定性,则应该选取其中哪种方法?

若仅从平均情况下排序最快这一点考虑,则应该选取其中哪些方法?

【北京航空航天大学1998一、10(4分)】

12.在堆排序、快速排序和合并排序中:

【吉林大学2001一、5(6分)】

(1).若只从存储空间考虑,则应首先选取哪种排序方法,其次选取哪种排序方法,最后选取哪种排序方法?

(2).若只从排序结果的稳定性考虑,则应选取哪种排序方法?

(3).若只从平均情况下排序最快考虑,则应选取哪种排序方法?

(4).若只从最坏情况下排序最快并且要节省内存考虑,则应选取哪种排序方法?

13.快排序、堆排序、合并排序、Shell排序中哪种排序平均比较次数最少,哪种排序占用空间最多,哪几种排序算法是不稳定的?

【首都经贸大学1997一、3(4分)】

14.欲求前k个最大元素,用什么分类方法好?

为什么?

什么是稳定分类?

分别指出下列算法是否是稳定分类算法,或易于改成稳定分类算法?

A.插入分类B.快速分类C.合并分类D.堆分类E.基数分类【东南大学1994一、3(8分)】

15.考虑由三个不同关键词构成的序列:

{a,b,c},试画出直接插入排序算法的二叉判定树。

【吉林大学2001一、3(4分)】

16.请阅读下列算法,回答问题

PROCEDUREsort(r,n)

BEGIN

FORi:

=2TOnDO

BEGIN

x:

=r(i);r(O):

=x;j:

=i-1;

WHILEx.key

BEGIN

r(j+1):

=r(j);j:

=j-1

END;

r(j+1):

=x

END

END;

问题一:

这是什么类型的排序算法,该排序算法稳定吗?

问题二:

设置r(O)的作用是什么?

若将WHILE—DO语句中判断条件改为x.key<=r(j).KEY,该算法将会有什么变化,是否还能正确工作?

【上海海运学院1998六(10分)】

17.下面是冒泡排序算法,请阅读并完成该程序,并回答以下问题:

PROCEDUREbubblesort(r,n)

BEGIN

i:

=1;m:

=n-1;flag:

=1;

WHILE(i<=

(1)___)AND(flag=

(2)____)DO

BEGIN

flag:

=(3)___;

FORj:

=1TOmDO

IFr[j].key>r[j+1].keyTHEN

BEGINflag:

=(4)___;t:

=r[j];r[j]:

=r[j+1];r[j+1]:

=t

END;

i:

=i+1;m:

=m-1

END;

END.

(1)请在上面横线上填上适当的语句,完成该算法程序。

(2)设计标志flag的作用是什么?

(3)该算法结点的最大比较次数和最大移动次数是多少?

(4)该分类算法稳定吗?

【上海海运学院1996六(12分)1999六(16分)】

18.仔细阅读下面的过程,并回答有关的问题

PROCEDUREunknownname(VARA:

array[1..500]OFinteger;n:

integer);

VARi,j,x:

integer;b:

boolean;

BEGIN

b:

=true;i:

=1;

WHILE(i

BEGIN

b:

=false;

FORj:

=1TO

(1)___DO

IF

(2)___

THENBEGIN

x:

=A[j];A[j]:

=A[j+1];A[j+1]:

=x;(3)___

END;

i:

=i+1;

END

END;【西安电子科技大学2001计应用六(14分)】

(1)在中填上正确的语句,使该过程能完成预期的功能。

(2)该过程使用的是什么排序方法?

(3)当数组A的元素初始时已按值递增排序,该过程执行中会进行多少次比较?

多少次交换?

(4)当数组A的元素初始时已按值递减排序,该过程执行中会进行多少次比较?

多少次交换?

19.写出下列排序算法的基本思想,并写出对序列(23,12,35,47,16,25,36,19,21,16)进行排序时每一趟的结果。

PROCbbsort(VARr:

sequence;n:

integer);

{r是一个数组}

d:

=1;pos[-1]:

=1;pos[1]:

=n;i:

=1;exchanged:

=true;

WHILEexchangedDO

[exchanged:

=false;

WHILEi<>pos[d]DO

[IF(r[i]-r[i+d])*d>0THEN[r[i]与r[i+d]交换;exchanged:

=true;];

i:

=i+d;

]

pos[d]:

=pos[d]-d;i:

=pos[d];d:

=-d;

]

ENDP;【山东科技大学2002五(12分)】

20.设要求从大到小排序。

问在什么情况下冒泡排序算法关键字交换的次数为最大。

【南京航空航天大学1996九、1(4分)】

21.设与记录R1,R2,…,Rn对应的关键词分别是K1,K2,…,Kn。

如果存在Ri和Rj使得j

22.现有一文件F含有1000个记录,其中只有少量记录次序不对,且它们距离正确位置不远;如果以比较和移动次数作为度量,那末将其排序最好采用什么方法?

为什么?

【北方交通大学1997四(8分)】

23.分析下面排序算法中各带标号语句的频度及此算法的时间复杂度,并指出该算法是属于哪一种排序方法。

【北京邮电大学1996一、2(7分)】

PROCEDUREsort(VARa:

ARRAY[1..n]OFinteger);

BEGIN

1FORi:

=1TOn-1DO

2[j:

=i;

3FORk:

=j+1TOnDO

4IFa[k]

=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].key

3VARi,j,k:

integer;

4BEGIN

5WHILEm

6BEGIN

7i:

=m;j:

=n+1;k:

=list[m].key;

8REPEAT

9REPEATi:

=i+1UNTILlist[i].key>=k;

10REPEATj:

=j-1UNTILlist[j].key<=k;

11IFi

12UNTILi>=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

IFs

qkpass(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分)堆排序是如何改进树形排序方法的?

优点是什

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1