第10章 排序.docx

上传人:b****5 文档编号:2849342 上传时间:2022-11-15 格式:DOCX 页数:38 大小:200.33KB
下载 相关 举报
第10章 排序.docx_第1页
第1页 / 共38页
第10章 排序.docx_第2页
第2页 / 共38页
第10章 排序.docx_第3页
第3页 / 共38页
第10章 排序.docx_第4页
第4页 / 共38页
第10章 排序.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

第10章 排序.docx

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

第10章 排序.docx

第10章排序

第10章排序(参考答案)

一、选择题

1.D

2.D

3.D

4.B

5.B

6.B

7.C,E

8.A

9.C

10.C,D,F

11.1D,C11.2A,D,F

11.3B11.4(A,C,F)(B,D,E)

12.C,D

13.A

14.B,D

15.D

16.D

17.C

18.A

19.A

20.C

21.C

22.B

23.C

24.C

25.A

26.C

27.D

28.C

29.B

30.C,B

31.D

32.D

33.A

34.D

35.A

36.A

37.A

38.C

39.B

40.C

41.C

42.B

43.A

44.B

45.A

46.C

47.B,D

48.D

49.D

50.D

51.C

52.E,G

53.B

54.C

55.C

56.B

57.B

58.A

59.1C59.2A59.3D59.4B59.5G

60.1B60.2C60.3A

61.1B61.2D61.3B61.4C61.5F

62.A

63.A

64.B

65.A

66.A

部分答案解释如下:

18.对于后三种排序方法两趟排序后,序列的首部或尾部的两个元素应是有序的两个极值,而给定的序列并不满足。

20.本题为步长为3的一趟希尔排序。

24.枢轴是73。

49.小根堆中,关键字最大的记录只能在叶结点上,故不可能在小于等于

n/2

的结点上。

64.因组与组之间已有序,故将n/k个组分别排序即可,基于比较的排序方法每组的时间下界为O(klog2k),全部时间下界为O(nlog2k)。

二、判断题

1.√

2.×

3.×

4.×

5.×

6.×

7.×

8.×

9.×

10.×

11.×

12.×

13.×

14.√

15.√

16.×

17.×

18.×

19.×

20.×

21.×

22.×

23.×

24.×

25.√

26.×

27.√

28.×

29.×

30.×

31.√

部分答案解释如下:

5.错误。

例如冒泡排序是稳定排序,将4,3,2,1按冒泡排序排成升序序列,第一趟变成3,2,1,4,此时3就朝向最终位置的相反方向移动。

12.错误。

堆是n个元素的序列,可以看作是完全二叉树,但相对于根并无左小右大的要求,故其既不是二叉排序树,更不会是平衡二叉树。

22.错误。

待排序序列为正序时,简单插入排序比归并排序快。

三、填空题

1.比较,移动2.生成有序归并段(顺串),归并3.希尔排序、简单选择排序、快速排序、堆排序等

4.冒泡,快速5.

(1)简单选择排序

(2)直接插入排序(最小的元素在最后时)

6.免去查找过程中每一步都要检测整个表是否查找完毕,提高了查找效率。

7.n(n-1)/2

8.题中p指向无序区第一个记录,q指向最小值结点,一趟排序结束,p和q所指结点值交换,同时向后移p指针。

(1)!

=null

(2)p->next(3)r!

=null(4)r->datadata(5)r->next(6)p->next

9.题中为操作方便,先增加头结点(最后删除),p指向无序区的前一记录,r指向最小值结点的前驱,一趟排序结束,无序区第一个记录与r所指结点的后继交换指针。

(1)q->link!

=NULL

(2)r!

=p(3)p->link(4)p->link=s(5)p=p->link

10.

(1)i

(2)j<=n-i+1(3)r[j].key

=i(5)max==i(6)r[max]<-->r[n-i+1]

11.

(1)N

(2)0(3)N-1(4)1(5)R[P].KEY

(8)N-1(9)0(10)O

(1)(每个记录增加一个字段)(11)稳定(请注意I的步长为-1)

12.3,(10,7,-9,0,47,23,1,8,98,36)13.快速14.(4,1,3,2,6,5,7)

15.最好每次划分能得到两个长度相等的子文件。

设文件长度n=2k-1,第一遍划分得到两个长度n/2的子文件,第二遍划分得到4个长度n/4的子文件,以此类推,总共进行k=log2(n+1)遍划分,各子文件长度均为1,排序结束。

16.O(n2)17.O(nlog2n)18.

(1)2*i

(2)r[j].key>r[j+1].key(3)true(4)r[j](5)2*i

19.

(1)2*i

(2)j<=r(3)j←j+1(4)x.key>heap[j].key(5)i←j(6)j←2*i(7)x

20.

(1)j:

=2*i

(2)finished:

=false(3)(r[j].key>r[j+1].key)(4)r[i]:

=r[j](5)i:

=j

(6)j:

=2*i(7)r[i]:

=t;(8)sift(r,i,n)(9)r[1]:

=r[i](10)sift(r,1,i-1)

21.④是堆

(1)选择

(2)筛选法(3)O(nlog2n)(4)O

(1)

22.

(1)选择

(2)完全二叉树(3)O(Nlog2N)(4)O

(1)(5)满足堆的性质

23.

(1)finish:

=false

(2)h[i]:

=h[j];i:

=j;j:

=2*j;(3)h[i]:

=x(4)h,k,n(5)sift(h,1,r-1)

24.{D,Q,F,X,A,P,B,N,M,Y,C,W}

25.

(1)p[k]:

=j

(2)i:

=i+1(3)k=0(4)m:

=n(5)m

=a[m](7)a[m]:

=t

26.程序(a)

(1)true

(2)a[i]:

=t(3)2TOnstep2(4)true(5)NOTflag

程序(b)

(1)1

(2)a[i]=t(3)(i=2;i<=n;i+=2)(4)1(5)flag

27.(Q,A,C,S,Q,D,F,X,R,H,M,Y),(F,H,C,D,Q,A,M,Q,R,S,Y,X)28.初始归并段(顺串)

29.初始归并段,初始归并段,减少外存信息读写次数(即减少归并趟数),增加归并路数和减少初始归并段个数。

30.n/m

31.

(1)m,j-1

(2)m:

=j+1(3)j+1,n(4)n:

=j-1最大栈空间用量为O(logn)。

四、应用题

1.假设含n个记录的序列为{R1,R2,…,Rn},其相应的关键字序列为{K1,K2,…,Kn},这些关键字相互之间可以进行比较,即在它们之间存在着这样一个关系Ks1≤Ks2≤…≤Ksn,按此固有关系将n个记录序列重新排列为{Rs1,Rs2,…,Rsn}。

若整个排序过程都在内存中完成,则称此类排序问题为内部排序。

2.

排序方法

平均时间

最坏情况

辅助空间

稳定性

不稳定排序举例

直接插入排序

O(n2)

O(n2)

O

(1)

稳定

折半插入排序

O(n2)

O(n2)

O

(1)

稳定

二路插入排序

O(n2)

O(n2)

O(n)

稳定

表插入排序

O(n2)

O(n2)

O

(1)

稳定

起泡排序

O(n2)

O(n2)

O

(1)

稳定

直接选择排序

O(n2)

O(n2)

O

(1)

不稳定

2,2’,1

希尔排序

O(n1.3)

O(n1.3)

O

(1)

不稳定

3,2,2’,1(d=2,d=1)

快速排序

O(nlog2n)

O(n2)

O(log2n)

不稳定

2,2’,1

堆排序

O(nlog2n)

O(nlog2n)

O

(1)

不稳定

2,1,1’(极大堆)

2-路归并排序

O(nlog2n)

O(nlog2n)

O(n)

稳定

基数排序

O(d*(rd+n))

O(d*(rd+n))

O(rd)

稳定

3.这种说法不对。

因为排序的不稳定性是指两个关键字值相同的元素的相对次序在排序前、后发生了变化,而题中叙述和排序中稳定性的定义无关,所以此说法不对。

对4,3,2,1起泡排序就可否定本题结论。

4.可以做到。

取a与b进行比较,c与d进行比较。

设a>b,c>d(ad,则有序a>b>d;若bd>b,此时已进行了3次比较。

再把另外两个元素按折半插入排序方法,插入到上述某个序列中共需4次比较,从而共需7次比较。

5.本题答案之一请参见第9章的“四、应用题”第70题,这里用分治法求解再给出另一参考答案。

对于两个数x和y,经一次比较可得到最大值和最小值;对于三个数x,y,z,最多经3次比较可得最大值和最小值;对于n(n>3)个数,将分成长为n-2和2的前后两部分A和B,分别找出最大者和最小者:

MaxA、MinA、MaxB、MinB,最后Max={MaxA,MaxB}和Min={MinA,MinB}。

对A使用同样的方法求出最大值和最小值,直到元素个数不超过3。

设C(n)是所需的最多比较次数,根据上述原则,当n>3时有如下关系式:

C(n)=

通过逐步递推,可以得到:

C(n)=3n/2-2。

显然,当n>=3时,2n-3>3n/2-2。

事实上,3n/2-2是解决这一问题的比较次数的下限。

6.假定待排序的记录有n个。

由于含n个记录的序列可能出现的状态有n!

个,则描述n个记录排序过程的判定树必须有n!

个叶子结点。

因为若少一个叶子,则说明尚有两种状态没有分辨出来。

我们知道,若二叉树高度是h,则叶子结点个数最多为2h-1;反之,若有u个叶子结点,则二叉树的高度至少为log2u+1。

这就是说,描述n个记录排序的判定树必定存在一条长度为log2(n!

)的路径。

即任何一个籍助“比较”进行排序的算法,在最坏情况下所需进行的比较次数至少是log2(n!

)。

根据斯特林公式,有log2(n!

)=O(nlog2n)。

即籍助于“比较”进行排序的算法在最坏情况下能达到的最好时间复杂度为O(nlog2n)。

证毕。

7.答:

拓扑排序,是有向图的顶点依照弧的走向,找出一个全序集的过程,主要是根据与顶点连接的弧来确定顶点序列;冒泡排序是借助交换思想通过比较相邻结点关键字大小进行排序的算法。

8.直接插入排序的基本思想是基于插入,开始假定第一个记录有序,然后从第二个记录开始,依次插入到前面有序的子文件中。

即将记录R[i](2<=i<=n)插入到有序子序列R[1..i-1]中,使记录的有序序列从R[1..i-1]变为R[1..i],最终使整个文件有序。

共进行n-1趟插入。

最坏时间复杂度是0(n2),平均时间复杂度是0(n2),空间复杂度是O

(1),是稳定排序。

简单选择排序的基本思想是基于选择,开始有序序列长度为零,第i(1<=i

共进行n-1趟选择。

最坏时间复杂度是0(n2),平均时间复杂度是0(n2),空间复杂度是O

(1),是不稳定排序。

二路并归排序的基本思想是基于归并,开始将具有n个待排序记录的序列看成是n个长度为1的有序序列,然后进行

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

当前位置:首页 > PPT模板 > 其它模板

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

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