收藏 分享(赏)

目前最完整的数据结构1800题包括完整答案 第十章 排序.doc

上传人:fmgc7290 文档编号:7691972 上传时间:2019-05-23 格式:DOC 页数:31 大小:283KB
下载 相关 举报
目前最完整的数据结构1800题包括完整答案 第十章 排序.doc_第1页
第1页 / 共31页
目前最完整的数据结构1800题包括完整答案 第十章 排序.doc_第2页
第2页 / 共31页
目前最完整的数据结构1800题包括完整答案 第十章 排序.doc_第3页
第3页 / 共31页
目前最完整的数据结构1800题包括完整答案 第十章 排序.doc_第4页
第4页 / 共31页
目前最完整的数据结构1800题包括完整答案 第十章 排序.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、 第 10 章 排序一、选择题1某内排序方法的稳定性是指( )。 【南京理工大学 1997 一、10(2 分) 】A该排序算法不允许有相同的关键字记录 B该排序算法允许有相同的关键字记录C平均时间为 0(n log n)的排序方法 D以上都不对 2下面给出的四种排序法中( )排序法是不稳定性排序法。 【北京航空航天大学 1999 一、10 (2 分) 】A. 插入 B. 冒泡 C. 二路归并 D. 堆积3下列排序算法中,其中( )是稳定的。 【福州大学 1998 一、3 (2 分)】A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序4稳定的排

2、序方法是( ) 【北方交通大学 2000 二、3(2 分) 】A直接插入排序和快速排序 B折半插入排序和起泡排序C简单选择排序和四路归并排序 D树形选择排序和 shell 排序5下列排序方法中,哪一个是稳定的排序方法?( ) 【北方交通大学 2001 一、8(2 分) 】A直接选择排序 B二分法插入排序 C希尔排序 D快速排序6若要求尽可能快地对序列进行稳定的排序,则应选(A快速排序 B归并排序 C冒泡排序) 。【北京邮电大学 2001 一、5(2 分) 】7如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。 ( )就是不稳定的排序方法。 【

3、清华大学 1998 一、3 (2 分) 】A起泡排序 B归并排序 CShell 排序 D直接插入排序 E简单选择排序8若要求排序是稳定的,且关键字为实数,则在下列排序方法中应选( )排序为宜。A直接插入 B直接选择 C堆 D快速 E基数 【中科院计算所 2000 一、5(2 分) 】9若需在 O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是( ) 。A. 快速排序 B. 堆排序 C. 归并排序 D. 直接插入排序【中国科技大学 1998 二、4(2 分) 】 【中科院计算所 1998 二、4(2 分) 】10下面的排序算法中,不稳定的是( ) 【北京工业大学

4、 1999 一、2 (2 分)】A.起泡排序 B.折半插入排序 C.简单选择排序 D.希尔排序 E.基数排序 F.堆排序。11下列内部排序算法中: 【北京工业大学 2000 一、1 (10 分 每问 2 分)】A快速排序 B.直接插入排序 C. 二路归并排序 D. 简单选择排序 E. 起泡排序 F. 堆排序(1) 其比较次数与序列初态无关的算法是( ) (2)不稳定的排序算法是( )(3)在初始序列已基本有序(除去 n 个元素中的某 k 个元素后即呈有序,k 快速排序 归并排序E以上答案都不对 【西安交通大学 1996 三、1 (3 分)】59排序方法有许多种, (1)法从未排序的序列中依次取

5、出元素,与已排序序列(初始时为空)中的元素作比较,将其放入已排序序列的正确位置上;(2)法从未排序的序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端; 交换排序方法是对序列中的元素进行一系列比较,当被比较的两元素逆序时,进行交换;(3)和(4)是基于这类方法的两种排序方法, 而(4)是比(3)效率更高的方法;(5)法是基于选择排序的一种排序方法,是完全二叉树结构的一个重要应用。 【北方交通大学 1999 一、3 (5 分) 】(1)-(5): A选择排序 B快速排序 C插入排序 D起泡排序 E归并排序 Fshell 排序 G堆排序 H基数排序类似本题的另外叙述有:(1)排序的方法有

6、很多种, ( )法从未排序的序列中依次取出元素与已排序序列中的元素比较,将其放在已排序序列的正确位置上;( )法从未排序序列中挑选元素,并将其依次放入已排序序列的一端;交换排序法是对序列中的元素进行一系列比较,当被比较的两元素逆序时,进行交换。 ( )和( )是基于这类方法的两种排序方法,而 ( )是比( )效率更高的方法。供选择的答案:A. 快速排序 B. 选择排序 C. 归并排序 D冒泡排序 E直接插入排序【山东大学 1998 三、2 (5 分)】 【山东工业大学 2000 三、2 (7 分) 】60设要将序列(q,h,c,y,p,a,m,s,r,d,f,x) 中的关键码按字母升序重新排序

7、,(1)( )是初始步长为 4 的 shell 排序一趟扫描的结果; (2)( )是对排序初始建堆的结果;(3)( )是以第一个元素为分界元素的快速一趟扫描的结果。从下面供选择的答案中选出正确答案填入括号内。 【厦门大学 2000 六、3 (16%/3 分) 】A. f ,h ,c ,d ,p ,a ,m ,q ,r ,s ,y ,x B. p ,a ,c ,s ,q ,d ,f ,x ,r ,h ,m ,yC. a ,d ,c ,r ,f ,q ,m ,s ,y ,p ,h ,x D. h ,c ,q ,p ,a ,m ,s ,r ,d ,f ,x ,yE. h ,q ,c ,y ,a ,p

8、 ,m ,s ,d ,r ,f ,x类似本题的另外叙述有:(1)在内排序的过程中,通常需要对待排序的关键码进行多编扫描,采用不同重新排序方法,会产生不同的排序中间结果。设要将序列中的关键码按字母序的升序排列,则( 1 )是冒泡排序一趟扫描的结果,( 2 )是初始步长为 4 的希尔(SHELL)排序一趟扫描的结果,( 3 ) 是合并排序一趟扫描的结果,( 4 )是以第一个元素为分界元素的快速排序一趟扫描的结果,( 5 )是堆排序初始建堆的结果。供选择的答案: 【上海海运学院 1997 二、3 (5 分) 】1-5:A. f,h,c,d,p,a,m,q,r,s,y,x B. p,a,c,s,q,d

9、,f,x,r,h,m,y C. a,d,c,r,f,q,m,s,y,p,h,xD. h,c,q,p,a,m,s,r,d,f,x,y E. h,q,c,y,a,p,m,s,d,r,f,x61对由 n 个记录所组成的表按关键码排序时,下列各个常用排序算法的平均比较次数分别是:二路归并排序为( 1 ),直接插入排序为( 2 ),快速排序为( 3 ),其中,归并排序和快速排序所需要的辅助存储分别是( 4 )和( 5 )。 【上海海运学院 1998 二、4 (5 分) 】1-5:A. O(1) B. O(nlog 2n) C. O(n) D. O(n 2) E. O(n(log 2n)2) F. O(l

10、og 2n) 62将两个各有 N 个元素的有序表归并成一个有序表,其最少的比较次数是( )AN B2N-1 C2N DN-1【中科院计算所 1998 二、7 (2 分) 】 【中国科技大学 1998 二、7 (2 分) 】63. 基于比较方法的 n 个数据的内部排序。最坏情况下的时间复杂度能达到的最好下界是( ) 。A. O(nlogn) B. O(logn) C. O(n) D. O(n*n) 【南京理工大学 1996 一、2 (2分) 】64已知待排序的 n 个元素可分为 n/k 个组,每个组包含 k 个元素,且任一组内的各元素均分别大于前一组内的所有元素和小于后一组内的所有元素,若采用基

11、于比较的排序,其时间下界应为( ) 。A. O(nlog2n) B. O(nlog2k) C. O(klog2n) D. O(klog2k) 【中国科技大学 1998 二、9 (2 分) 】类似本题的另外叙述有:(1)已知待排序的 N 个元素可分为 N/K 个组,每个组包含 K 个元素,且任一组内的各元素均分别大于前一组内的所有元素和小于后一组内的所有元素,若采用基于比较的排序,其时间下界应为( )A. O(klog2k) B. O(klog2n) C. O(nlog2k) D. O(nlog2n) 【中科院计算所 1998 二、9 (2 分) 】65采用败者树进行 k 路平衡归并的外部排序算

12、法,其总的归并效率与 k ( )A 有关 B无关 【北京工业大学 2000 一 、2 (3 分)】66采用败者树进行 K 路平衡归并时,总的(包括访外)归并效率与 K( ) 。A有关 B无关 【北京工业大学 2001 一、4 (2 分)】二、判断题:1当待排序的元素很大时,为了交换元素的位置,移动元素要占用较多的时间,这是影响时间复杂度的主要因素。 ( )【长沙铁道学院 1998 一、10 (1 分)】2内排序要求数据一定要以顺序方式存储。 ( )【南京理工大学 1997 二、2(2 分)】3排序算法中的比较次数与初始元素序列的排列无关。 ()【南京航空航天大学 1997 一、8 (1 分)

13、】4排序的稳定性是指排序算法中的比较次数保持不变,且算法能够终止。( )【南京航空航天大学 1996 六、9 (1 分) 】5在执行某个排序算法过程中,出现了排序码朝着最终排序序列位置相反方向移动,则该算法是不稳定的。 ( )【上海交通大学 1998 一、18】6直接选择排序算法在最好情况下的时间复杂度为 O(N) 。 ( )【合肥工业大学 2001 二、10(1 分) 】7两分法插入排序所需比较次数与待排序记录的初始排列状态相关。 ()【上海交通大学 1998 一、15】8在初始数据表已经有序时,快速排序算法的时间复杂度为 O(nlog2n )。 ( )【合肥工业大学 2000 二、9(1

14、分) 】9在待排数据基本有序的情况下,快速排序效果最好。 ( )【南京理工大学 1997 二、4(2 分) 】10当待排序记录已经从小到大排序或者已经从大到小排序时,快速排序的执行时间最省。( )【上海交通大学 1998 一、16】11快速排序的速度在所有排序方法中为最快,而且所需附加空间也最少。 ( )【北京邮电大学 1998 一、7 (2 分) 】12堆肯定是一棵平衡二叉树。 ( )【南京航空航天大学 1997 一、6 (1 分) 】13堆是满二叉树。( )【南京航空航天大学 1996 六、6 (1 分) 】14 (101,88,46,70,34,39,45,58,66,10)是堆。 (

15、)【北京邮电大学 1999 二、1 (2 分) 】15在用堆排序算法排序时,如果要进行增序排序,则需要采用“大根堆” 。 ( )【合肥工业大学 2000 二、10(1 分) 】16堆排序是稳定的排序方法。 ( )【上海交通大学 1998 一、19】17归并排序辅助存储为 O(1) 。 ( )【青岛大学 2000 四、9(1 分) 】18在分配排序时,最高位优先分配法比最低位优先分配法简单。 ( )【上海交通大学 1998 一、20】19 冒泡排序和快速排序都是基于交换两个逆序元素的排序方法,冒泡排序算法的最坏时间复杂性是 O(n*n),而快速排序算法的最坏时间复杂性是 O(nlog2n),所以

16、快速排序比冒泡排序算法效率更高。 ( )【上海海运学院 1997 一、9(1 分) 】20交换排序法是对序列中的元素进行一系列比较,当被比较的两个元素逆序时,进行交换,冒泡排序和快速排序是基于这类方法的两种排序方法,冒泡排序算法的最坏时间复杂性是 O(n*n) ,而快速排序算法的最坏时间复杂性是 O(nlog 2n) ;所以快速排序比冒泡排序效率更高。 ( )【上海海运学院 1998 一、10 (1 分) 】 【上海海运学院 1995 一、10(1 分) 】21快速排序和归并排序在最坏情况下的比较次数都是 O(nlog2n)。 ( )【上海海运学院 1996 一、9(1 分) 】22在任何情况

17、下,归并排序都比简单插入排序快。 ( )【北京邮电大学 2000 一、4 (1 分) 】23归并排序在任何情况下都比所有简单排序速度快。 ( )【北京邮电大学 2002 一、9(1 分) 】24快速排序总比简单排序快。 ( )【东南大学 2001 一、9 (1 分) 】25. 中序周游(遍历)平衡的二叉排序树,可得到最好排序的关键码序列。 ( )【中山大学 1994 一、4 (2 分) 】26外部排序是把外存文件调入内存,可利用内部排序的方法进行排序,因此排序所花的时间取决于内部排序的时间。( )【北京邮电大学 1998 一、8 (2 分) 】27在外部排序时,利用选择树方法在能容纳 m 个记

18、录的内存缓冲区中产生的初始归并段的平均长度为 2m 个记录。( )【上海海运学院 1999 一、10(1 分) 】28为提高在外排序过程中,对长度为 N 的初始序列进行“置换选择”排序时,可以得到的最大初始有序段的长度不超过 N/2。( )29排序速度,进行外排序时,必须选用最快的内排序算法。( )30在完成外排序过程中,每个记录的 I/O 次数必定相等。( )【大连海事大学 2001 一、20 (每题 1 分)】31影响外排序的时间因素主要是内存与外设交换信息的总次数。( )【东北大学 1997 二、5 (2 分)】三、填空题1若不考虑基数排序,则在排序过程中,主要进行的两种基本操作是关键字

19、的_和记录的_。【北京邮电大学 2001 二、7 (4 分) 】2. 外排序的基本操作过程是_和_。 【西安电子科技大学 1998 二、3 (3 分) 】类似本题的另外叙述有:(1)外部排序中两个相对独立的阶段是_和_。【西安电子科技大学 1999 软件 一、8 (2 分) 】3. 属于不稳定排序的有_。 【青岛大学 2002 三、5 (2 分) 】4分别采用堆排序,快速排序,冒泡排序和归并排序,对初态为有序的表,则最省时间的是_算法,最费时间的是_算法。 【福州大学 1998 二、10 (2 分)】类似本题的另外叙述有:(1)设表中元素的初始状态是按健值递增的,分别用堆排序,快速排序,冒泡排

20、序和归并排序方法对其进行排序(按递增顺序), _排序最省时间,_排序最费时间。【厦门大学 2001 一、5 (14%/5 分)】5. 不受待排序初始序列的影响,时间复杂度为 O(N2)的排序算法是_,在排序算法的最后一趟开始之前,所有元素都可能不在其最终位置上的排序算法是_。【中国人民大学 2001 一、3 (2 分)】6直接插入排序用监视哨的作用是_。 【南京理工大学 2001 二、8 (2 分) 】7对 n 个记录的表 r1n进行简单选择排序,所需进行的关键字间的比较次数为_。【华中理工大学 2000 一、10 (1 分) 】8. 用链表表示的数据的简单选择排序,结点的域为数据域 data

21、 ,指针域 next ;链表首指针为 head ,链表无头结点。selectsort(head)p=head;while (p(1)_)q=p; r=(2)_while(3)_ )if (4)_ ) q=r;r=(5)_ ; tmp=q-data; q-data=p-data; p-data=tmp; p= (6)_ ; 【南京理工大学 2000 三、2 (6 分) 】9下面的 c 函数实现对链表 head 进行选择排序的算法,排序完毕,链表中的结点按结点值从小到大链接。请在空框处填上适当内容,每个空框只填一个语句或一个表达式:#include typedef struct node char

22、 data; struct node *link; node;node *select(node *head)node *p,*q,*r,*s; p=(node *)malloc(sizeof(node);p-link=head; head=p;while(p-link!=null)q=p-link; r=p;while (1)_) if (q-link-datalink-data) r=q;q=q-link;if (2)_) s=r-link; r-link=s-link; s-link= (3)_); (4)_);(5)_) ;p=head; head=head-link; free(p)

23、; return(head); 【复旦大学 1999 六(15 分) 】10下面的排序算法的思想是:第一趟比较将最小的元素放在 r1中,最大的元素放在rn中,第二趟比较将次小的放在 r2中,将次大的放在 rn-1中,,依次下去,直到待排序列为递增序。 (注:)代表两个变量的数据交换) 。void sort(SqList while(1)_) min=max=1;for (j=i+1;(2)_ ;+j) if(3)_) min=j; else if(rj.keyrmax.key) max=j; if(4)_) rmin rj;if(max!=n-i+1)if (5)_) rmin rn-i+1;

24、 else (6)_); i+;/sort 【南京理工大学 2001 三、2 (10 分) 】11表插入排序的基本思想是在结点中设一指针字段,插入 Ri 时 Rl 到 Ri-1 己经用指针按排序码不减次序链结起夹,这时采用顺序比较的方法找到 Ri 应插入的位置,做链表插入。如此反复,直到把 Rn 插入为止。(1)(6 分)请完成下列表插人的算法;【山东工业大学 2000 五(16 分) 】 【山东大学 1998 五】. R0.LINK(1)_; RN.LINK(2)_;. 循环,I 以-1 为步长,从(3)_到(4)_执行(1)P R0.LINK; Q 0(2)循环,当 P0 且(5)_ 时,

25、反复执行QP; P(6)_(3)RQ.LINKI; RI.LINKP(2)(2 分) 表插入排序的最大比较次数是(7)_; (3) (2 分)表插入排序的最小比较次数是(8)_;(4) (2 分)记录移动的次数是(9)_; (5) (2 分)需要附加的存储空间是(10)_;(6) (2 分)该排序算法是否是稳定的(11)_。12. 设用希尔排序对数组98,36,-9,0,47,23,1,8,10,7进行排序,给出的步长(也称增量序列)依次是 4,2,1 则排序需_趟,写出第一趟结束后,数组中数据的排列次序_。【南京理工大学 1997 三、5 (2 分) 】13从平均时间性能而言,_排序最佳。

26、【青岛大学 2001 六、5 (3 分) 】14对于 7 个元素的集合1,2,3,4,5,6,7进行快速排序,具有最小比较和交换次数的初始排列次序为_。 【长沙铁道学院 1997 二、1 (2 分)】15快速排序在_的情况下最易发挥其长处。 【长沙铁道学院 1998 二、5 (2 分)】类似本题的另外叙述有:(1)快速排序法在_情况下最不利于发挥其长处,在_情况下最易发挥其长处。 【山东大学 2001 三、5 (2 分)】16在数据表有序时,快速排序算法的时间复杂度是_。 【合肥工业大学 2001 三、10 (2 分) 】17堆排序的算法时间复杂度为:_。 【合肥工业大学 1999 三、10

27、(2 分) 】18PROC sift(VAR r:listtype;k,m:integer); 假设 rk+1m中各元素满足堆的性质,本算法调整 rk使整个序列 rkm中各元素满足堆的性质。i:=k; j:= (1)_; x:=rk.key; finished:=false; t:=rk;WHILE (jheapj+1.key 则(3)_若(4)_则 heapiheapj; (5)_; (6)_ 否则跳出循环步 3.结束heapi (7)_ 【山东工业大学 1996 三、2 (7 分) 】20以下程序的功能是利用堆进行排序。请在空白处填上适当语句,使程序完整。PROCEDURE sift(VA

28、R r:arr;k,m:integer); VAR i,j,x:integer; t:rec; finished:boolean;BEGIN i:=k; (1)_; x:=ri.key; (2)_;t:=rk;WHILE (jhj+1) THEN j:=j+1;IF xhj THEN (2)_ ELSE finish:=true;(3)_ END;PROC heapsort(VAR h:heaptype; n:integer);VAR k,r,i,j:integer;BEGINFOR k:=n DIV 2 DOWNTO 1 DO sift (4)_) ;FOR r:=n DOWNTO 2 DO

29、x:=h1; h1:=hr; hr:=x; (5)_) END; 【北京工业大学 1997 五、2 (16 分)】24设有字母序列Q,D,F,X,A,P,N,B,Y,M,C,W,请写出按 2 路归并排序方法对该序列进行一趟扫描后的结果_。 【北方交通大学 2001 二、7】25. 阅读下列程序说明和 PASCAL 程序,把应填入其中_处的字句写在答题纸上。程序说明:本题给出的是将数组 a 的元素 a1,a 2,an从大到小排序的子程序。子程序采用改进的选择排序方法,该方法基于以下思想:在选择第一大元过程中, a1与 aj(j=n,n-1,2)逐个比较,若发现 aj1a1,则 aj1与 a1变换

30、,变换后新的 aj1有性质 aj1a t(j1a1 (j2j2jk1。有了这些下标,在确定第二大元时,可只考虑 a2与 aj (j=jk,jk-1,3) 逐个比较。倘若 jk=2,则可不经比较就知道它是第二大元。在选择第二大元过程中,将与 a2交换过的元素下标也标记下来,可供选择其他大元使用,但在选择第二大元时,应保证与 a2交换的那些位置上的新值也都满足上述性质,依次类推,顺序选择第一,第二 ,第 n-1 大元,实现对 a 的排序。设程序包含有常量和类型定义:CONST maxn=1000;TYPE vector=ARRAY1maxn OF integer;index= 1maxn;PROC

31、EDURE sort(VAR a:vector;n:index)VAR p:vector; i,j,k,m,t:integer;BEGINk:=0; i:=1; m:=n;WHILE iai+1,将二者交换;以后重复上述二趟过程,直至整个数组有序。程序.(a)PROCEDURE oesort(VAR a:ARRAY1n OF integer);VAR flag:boolean; i,t:integer;BEGINREPEATflag:=false;FOR i:=1 TO n step 2 DOIF(aiai+1) THENflag:= (1)_; t:=ai+1; ai+1:=ai; (2)_

32、FOR i:= (3)_ DOIF (aiai+1) THENflag:= (4)_ ; t:=ai+1;ai+1:=ai; ai:=t;UNTIL (5)_ ;END;程序(b)void oesort (int an)int flag,i,t;do flag=0;for(i=1;iai+1)flag=(1)_; t=ai+1; ai+1=ai; (2)_;for (3)_ if (aiai+1)flag=(4)_;t=ai+1; ai+1=ai; ai=t;while (5)_; 【上海大学 2000 一、1 (10 分) 】27关键码序列( Q,H,C,Y,Q,A,M,S,R,D,F,X)

33、 ,要按照关键码值递增的次序进行排序,若采用初始步长为 4 的 Shell 排序法,则一趟扫描的结果是_;若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是_。 【北京大学 1997 一、4 (4 分) 】类似本题的另外叙述有:(1)设有字符序列 Q、H、C、Y、P、A、M、S、R、D、F、X 要求按字符升序排序,采用初始步长为的希尔(shell)排序,一趟扫描的结果是_;采用以首元素为分界元素的快速排序,一趟扫描的结果是_。【北京工业大学 1999 一、7 (8 分)】28外部排序的基本方法是归并排序,但在之前必须先生成_。 【北京邮电大学 2001 二、6(2 分) 】29磁盘排

34、序过程主要是先生成 ,然后对 合并,而提高排序速度很重要的是 ,我们将采用 方法来提高排序速度。 【山东工业大学 1995 一、4(4 分) 】30设输入的关键字满足 k1k2kn,缓冲区大小为 m,用置换-选择排序方法可产生_个初始归并段。【武汉大学 2000 一、9】31下面是一改进了的快速排序算法,请填空并简要说明支持 improveqsort 递归所需要的最大栈空间用量。PROCEDURE improveqsort(VAR list:afile;m,n:integer);设 listm.key=k;REPEAT j:=j-1 UNTIL listj.key=j;interchange(

35、listm,listj);IF n-j=j-m THEN BEGIN improveqsort(list, (1)_); (2)_;ENDELSE BEGINimproveqsort(list, (3)_); (4)_;ENDEND; OF WHILEEND; 【东南大学 2001 五(10 分) 】四、应用题1. 内部排序(名词解释) 。 【燕山大学 1999 一、5 (2 分) 】2. 在各种排序方法中,哪些是稳定的?哪些是不稳定的?并为每一种不稳定的排序方法举出一个不稳定的实例。 【大连海事大学 1996 七、3 (分)】类似本题的另外叙述有:(1) 举例说明堆排序是否为稳定排序法. 【

36、西安电子科技大学 1996 三、4 (5 分) 】(2) 选择排序算法是否稳定?为什么? 【燕山大学 2001 三、3 (5 分) 】(3) 举例分析堆排序方法是否稳定。 【北京邮电大学 1993 二、3 (6 分) 】(4) 堆排序是稳定排序吗?举例说明。 【东南大学 1996 一、5 (6 分) 】(5) 试举例分析堆排序法是否稳定。 【东南大学 1999 一、5 (5 分) 】(6) 树型选择排序通常采用顺序存储结构, 试指出 n 个元素的原始序列一般如何在该存储结构中存放(起始存储位置,次序) ,请说明理由。讨论树形选择排序的稳定性。若稳定,须说明理由;不稳定,须举反例,并尝试找出使它

37、稳定的方法。 【北京工业大学 1999 七 (10 分)】3在执行某种排序算法的过程中出现了排序码朝着最终排序序列相反的方向移动,从而认为该排序算法是不稳定的,这种说法对吗?为什么? 【燕山大学 2001 三、4 (5 分) 】4设有 5 个互不相同的元素 a、b、c、d、e,能否通过 7 次比较就将其排好序?如果能,请列出其比较过程;如果不能,则说明原因。 【北方交通大学 1996 五(10 分) 】5对一个由 n 个关键字不同的记录构成的序列,能否用比 2n-3 少的次数选出该序列中关键字取最大值和关键字取最小值的记录?请说明如何实现?在最坏的情况下至少进行多少次比较?【东南大学 2000

38、 一、5 (8 分) 】6利用比较的方法进行排序,在最坏的情况下,能达到的最好时间复杂性是什么?请给出详细证明。【上海交通大学 2000 六 (8 分) 】7以下概念的区别:拓扑排序与冒泡排序。 【大连海事大学 1996 三、 2(3) (2 分)】8简述直接插入排序,简单选择排序,2-路归并排序的基本思想以及在时间复杂度和排序稳定性上的差别。【西北工业大学 1999 二 (8 分)】9快速排序,堆排序和希尔排序是时间性能较好的排序方法,也是稳定的排序方法。判断正误并改错。【燕山大学 1998 二、5 (2 分) 】10. 设 LS 是一个线性表,LS=(a1,a2,an),若采用顺序存储结构

39、,则在等概率的前提下,插入一个元素需要平均移动的元素个数是多少?若元素插在 ai与 ai+1之间(0rj+1.key THENBEGIN flag:= (4)_; t:=rj; rj:=rj+1; rj+1:=tEND;i:=i+1;m:=m-1END; END. (1) 请在上面横线上填上适当的语句,完成该算法程序。(2) 设计标志 flag 的作用是什么?(3) 该算法结点的最大比较次数和最大移动次数是多少?(4) 该分类算法稳定吗? 【上海海运学院 1996 六(12 分) 1999 六(16 分) 】18仔细阅读下面的过程,并回答有关的问题PROCEDURE unknownname(V

40、AR A:array1500 OF integer;n:integer);VAR i,j,x:integer; b:boolean;BEGINb:=true; i:=1;WHILE (iposd DOIF (ri-ri+d)*d0 THEN ri与 ri+d交换; exchanged:=true;i:=i+d;posd:=posd-d; i:=posd; d:=-d;ENDP; 【山东科技大学 2002 五 (12 分) 】20设要求从大到小排序。问在什么情况下冒泡排序算法关键字交换的次数为最大。【南京航空航天大学 1996 九、1 (4 分) 】21设与记录 R1,R2,Rn 对应的关键词分

41、别是 K1,K2,Kn。如果存在 Ri 和 Rj 使得 j=k;10 REPEAT j:=j-1 UNTIL listj.key=j;13 interchange( listm,listj);14 IF n-j=j-m15 THEN BEGIN qsort1(list,m,j+1);m:=j+1;END16 ELSE BEGIN qsort1(list,j+1,n);n:=j-1;END17 END;(OF WHILE)18 END.问: (1) 将第 9、10 行中的=,=分别改成,行吗?为什么? (5 分)(2) 该排序算法稳定否?举例说明 (5 分)(3) 对输入文件(22,3,30,4

42、,60,11,58,18,40,16) ,列表表示该文件在每次调用 qsort1 时的状态及相应 m、n 值。 (5 分)(4) 若输入文件有 n 个记录,简要说明支持 qsort1 递归所需最大栈空间用量(设一层递归用一个单位栈空间) 。 (5 分) 【东南大学 1998 四 (20 分) 】36如果只要找出一个具有 n 个元素的集合的第 k(1kn)个最小元素,你所学过的排序方法中哪种最适合?给出实现的思想。 【北方交通大学 1998 六 (10 分) 】37已知快速排序和归并排序的算法分别如下所示:PROCEDURE qksort(VAR r:listtype; s,t:integer)

43、;BEGINIF sk,最好采用什么排序方法?为什么?如果有这样一个序列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, 用你选用算法实现时,共执行多少次比较?【北方交通大学 199

44、4 七(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)

45、(6 分)设某文件中待排序记录的排序码为 72,73,71,23,94,16,05,68,试画图表示出树形选择排序(增序)过程的前三步。(2)(4 分) 试说明树形选择排序的基本思想。(3)(2 分) 树形选择排序与直接选择排序相比较,优缺点是什么?(4)(3 分) 堆排序是如何改进树形排序方法的?优点是什么?【山东大学 1999 五(15 分) 】 【山东工业大学 1999 五 (15 分) 】 46. 若有 N 个元素已构成一个小根堆, 那么如果增加一个元素为 Kn+1,请用文字简要说明你如何在 log2n 的时间内将其重新调整为一个堆? 【中科院计算所 1999 三、2 (5分) 】 4

46、7填空并回答相关问题(1)下面是将任意序列调整为最大堆(MAX HEAP)的算法,请将空白部分填上:将任意序列调整为最大堆通过不断调用 adjust 函数,即:FOR(i=n/2;i 0;i- -)adjust(list,i,n) ;其中 list 为待调整序列所在数组(从下标 1 开始) ,n 为序列元素个数,adjust 函数为:void adjust(int list,int root,int n)/*将以 root 为下标的对应元素作为待调整堆的根,待调整元素放在 list 数组中,最大元素下标为 n*/int child,rootkey;rootkey=listroot;child=2*root;while(childlistchild)break;elseList(2) =listchild;child*=2;listchild/2=rootkey;(2)判断下列序列能否构成最大堆:(12,70,33,65,24,56,48,92,86,33) ;若不能按上述算法将其调整为堆,调整后的结果为:( ) 。 【浙江大学 1998 七 (11 分)】48回答问题:

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报