ImageVerifierCode 换一换
格式:DOC , 页数:12 ,大小:105KB ,
资源ID:3794363      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3794363.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构单元练习10.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

数据结构单元练习10.doc

1、 单元测验 10一判断题(下列各题,正确的请在前面的括号内打;错误的打 ) () (1)如果某种排序算法不稳定,则该排序方法就没有实用价值。() (2)希尔排序是不稳定的排序。() (3)冒泡排序是不稳定的排序。() (4)对 n 个记录的进行快速排序,所需要的平均时间是 O(nlog2n)。() (5)堆排序所需的时间与待排序的记录个数无关。() (6)当待排序的元素个数很多时,为了交换元素的位置要占用较多的时间,这是影响时间复杂度的主要因素。() (7) 快 速 排 序 在 任 何 情 况 下 都 比 其 它 排 序 方 法 速 度 快 。() (8)对快速排序来说,初始序列为正序或反序都

2、是最坏情况。() (9)采用归并排序可以实现外排序。() (10)采用希尔方法排序时,若关键字的排列杂乱无序,则效率最高。二填空题(1) 大多数排序算法都有两个基本的操作: 比较 和移动。(2) 评价排序算法优劣的主要标准是 时间复杂度 和算法所需的附加空间。(3) 根据被处理的数据在计算机中使用不同的存储设备,排序可分为: 内排序 和外排序。(4) 外排序是指在排序过程中,数据的主要部分存放在计算机的 外存 中。(5) 对 n 个关键字进行冒泡排序,其可能的最小比较次数为: n-1 次。(6) 在最坏情况下,在第 i 趟直接插入排序中,要进行 i-1 次关键字的比较。(7) 对 n 个关键字

3、进行冒泡排序,时间复杂度为 O(n 2) 。(8) 快速排序在最坏情况下的时间复杂度是 O(n 2) 。(9) 对于 n 个记录的集合进行归并排序,所需要的平均时间为: O(log 2n) 。(10) 对于 n 个记录的集合进行归并排序,所需要的附加空间是 O(n) 。(11) 若原始数据接近无序,则选用 快速排序 最好。(12) 在排序前,关键字值相等的不同记录,排序后相对位置保持 不变 的排序方法,称为稳定排序方法。(13) 在插入排序和选择排序中,若初始数据基本正序,则选用 插入排序 较好。(14) 当增量为 1 时,该趟希尔排序与 直接插入 排序基本一致。(15) 第一趟排序后,序列中

4、键值最大的记录交换到最后的排序算法是 冒泡排序 。(16) 依次将每个记录插入到一个有序的子文件中的排序方法称为 直接插入 排序。(17) 在插入排序、选择排序和归并排序中,排序是不稳定的为: 选择排序 。(18) 在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第 7个记录 60 插入到有序表时,为寻找插入位置需比较 3 次。(19) 两个序列分别为:L1=25,57,48,37,92,86,12,33L2=25,37,33,12,48,57,86,92。用冒泡排序法对 L1 和 L2 进行排序,交换次数较少的是序列: L2 。(20)对一组记录(

5、54,35,96,21,12,72,60,44,80)进行直接选择排序时,第四次选择和交换后,未排序记录是 54,72,60,96,80 。三选择题(1)排序是根据( A )的大小重新安排各元素的顺序。A关键字 B数组 C元素件 D结点(2)评价排序算法好坏的标准主要是( D )。A执行时间 B辅助空间C算法本身的复杂度 D执行时间和所需的辅助空间(3)直接插入排序的方法是( B )的排序方法。A不稳定 B稳定 C外部 D选择(4)直接插入排序的方法要求被排序的数据( B )存储。A必须链表 B必须顺序 C顺序或链表 D可以任意(5)排序方法中,从无序序列中选择关键字最小的记录,将其与无序区(

6、初始为空)的第一个记录交换的排序方法,称为 ( D )。A希尔排序 B归并排序 C插入排序 D. 选择排序(6)每次把待排序方的区间划分为左、右两个区间,其中左区间中元素的值不大于基准元素的值,右区间中元素的值不小于基准元素的值,此种排序方法叫做( C )。A冒泡排序 B堆排序 C快速排序 D. 归并排序(7)快速排序在( C )情况下最易发挥其长处。A待排序的数据中含有多个相同的关键字 B待排序的数据已基本有序C待排序的数据完全无序 D待排序的数据中最大值与最小值相差悬殊(8)下述几种排序方法中,要求内存量最大的是:( D )。A插入排序 B选择排序 C快速排序 D. 归并排序(9)直接插入

7、排序的方法是从第( B )个元素开始,插入到前边适当位置的排序方法。A1 B2 C3 Dn(10)堆的形状是一棵( C ) 。A二叉排序树 B满二叉树 C完全二叉树 D平衡二叉树(11)内排序是指在排序的整个过程中,全部数据都在计算机的( A )中完成的排序。A内存 B外存 C内存和外存 D寄存器(12)快速排序的方法是( A )的排序方法。A不稳定 B稳定 C外部 D选择(13)下列排序方法中,关键字比较次数与记录的初始排列次序无关的是( A )。A选择排序 B希尔排序 C插入排序 D冒泡排序(14)下述几种排序方法中,平均时间复杂度最小的是( A )。A希尔排序 B插入排序 C冒泡排序 D

8、选择排序(15)对有 n 个记录的表作快速排序,在最坏情况下,算法的时间复杂度是( B ) 。AO(n) BO(n 2) CO(nlog 2n) DO(n 3)(16)冒泡排序的方法对 n 个数据进行排序,第一趟排序共需要比较( C )次。A1 B2 Cn-1 Dn(17)对个不同的排序码进行冒泡(递增)排序,在下列( B )情况比较的次数最多。A从小到大排列好的 B从大到小排列好的 C 元素无序 D元素基本有序(18)用直接插入排序法对下面的四个序列进行由小到大的排序,元素比较次数最少的是( B )。A,94,32,40,90,80,46,21,69 B21,32,46,40,80,69,9

9、0,94C32,40,21,46,69,94,90,80 D90,69,80,46,21,32,94,40(19)一组记录的排序码为(25,48,16,35,79,82,23,40),其中含有 4 个长度为 2 的有序表,按归并排序的方法对该序列进行一趟归并后的结果为:( A )。A,16 25 35 48 23 40 79 82 36 72 B16 25 35 48 79 82 23 36 40 72C16 25 48 35 79 82 23 36 40 72 D16 25 35 48 79 23 36 40 72 82(20)一个数据序列的关键字为:(46,79,56,38,40,84),

10、采用快速排序,并以第一个数为基准得到第一次划分的结果为:( C )A(38,40,46,56,79,84) B(40,38,46,79,56,84)C(40,38,46,56,79,84) D(40,38,46,79,56,84)四排序过程分析1 已知数据序列10,8,18,15,7,16,写出采用直接插入算法排序时,每一趟排序的结果。解: 10 8 18 15 7 16第一趟结束时结果: 8 10 18 15 7 16第二趟结束时结果: 8 10 18 15 7 16第三趟结束时结果: 8 10 15 18 7 16第四趟结束时结果: 7 8 10 15 18 16第五趟结束时结果: 7 8

11、 10 15 16 182 已知数据序列18,17,60,40,07,32,73,65,写出采用直接插入算法排序时,每一趟排序的结果。解: 18 17 60 40 07 32 73 65第一趟结束时结果: 17 18 60 40 07 32 73 65第二趟结束时结果: 17 18 60 40 07 32 73 65第三趟结束时结果: 17 18 40 60 07 32 73 65第四趟结束时结果: 07 17 18 40 60 32 73 65第五趟结束时结果: 07 17 18 32 40 60 73 65第六趟结束时结果: 07 17 18 32 40 60 73 65第七趟结束时结果:

12、 07 17 18 32 40 60 65 73 3. 已知数据序列17,18,60,40,7,32,73,65,85请写出采用冒泡排序法对该序列作升序排序时每一趟的结果。解: 17 18 60 40 7 32 73 65 85第一趟排序结果: 17 18 40 7 32 60 65 73 85第二趟排序结果: 17 18 7 32 40 60 65 73第三趟排序结果: 17 7 18 32 40 60 65第四趟排序结果: 7 17 18 32 40 60第五趟排序结果: 7 17 18 32 40第五趟排序过程中已无记录交换,排序结束。4 已知数据序列80,18,9,90,27,75,4

13、2,69,34请写出采用冒泡排序法对该序列作升序排序时每一趟的结果。解: 80 18 09 90 27 75 42 69 34第一趟排序结果: 18 09 80 27 75 42 69 34 90第二趟排序结果: 09 18 27 75 42 69 34 80第三趟排序结果: 09 18 27 42 69 34 75第四趟排序结果: 09 18 27 42 34 69第五趟排序结果: 09 18 27 34 40第六趟排序结果: 09 18 27 34第六趟排序过程中已无记录交换,排序结束。5 已知数据序列10,18,4,3,6,12,9,15,8,写出希尔排序每一趟(设 d=4、2、1)排序

14、的结果。解:10 18 4 3 6 12 9 15 8d=4 6 12 4 3 8 18 9 15 10d=2 4 3 6 12 8 15 9 18 10d=1 3 4 6 8 9 10 12 15 18 6 已知数据序列12,02,16,30,28,10,17,20,06,18,写出希尔排序每一趟排序的结果。(设 d=5、2、1)解: 12 02 16 30 28 10 17 20 06 18d=510 02 16 06 18 12 17 20 30 28d=212 02 16 06 17 12 18 20 30 28d=1 02 06 10 12 16 17 18 20 28 307 已知

15、数据序列10,18,4,3,6,12,9,15,写出二路归并排序的每一趟排序结果。10 18 4 3 6 12 9 15 10 18 3 4 6 12 9 15 第一趟排序结果3 4 10 18 6 9 12 15 第二趟排序结果3 4 6 9 10 12 15 18 第三趟排序结果8 已知数据序列53,36,48,36,60,7,18,41,写出采用简单选择排序的每一趟排序结果。解: 53 36 48 36 60 7 18 41(7) 36 48 36 60 53 18 41(7 18) 48 36 60 53 36 41(7 18 36) 48 60 53 36 41(7 18 36 36

16、) 60 53 48 41(7 18 36 36 41) 53 48 60(7 18 36 36 41 48) 53 60(7 18 36 36 41 48 53) 60(7 18 36 36 41 48 53 60 )9 已知数据序列10,1,15,18,7,15,试画出采用快速排序法,第一趟排序的结果。解10 1 15 18 7 15low high交换7 1 15 18 10 15low high交换第一趟排序结果: 7 1 10 18 15 15low high10 已知数据序列10,1,15,18,7,15,试写出采用快速排序法,第一趟排序的结果。解:7 1 10 18 15 15五

17、二分插入排序程序填空void BInsSort( ) / 按递增序对 R1R n 进行二分插入排序 int i, j, low, high, m;for ( i=2; i=high+1;j-)Rj+1= R j ; / 元素后移Rhigh=R0; / 插入六 算法题1以单链表为存储结构,写一个直接选择排序算法。解: void selectsort(pointer h) pointer p,q,r,s,t;t=NULL;while(h) p=h; q=NULL;s=h; r=NULL;while (p) if (p-keykey) s=p; p=q; if (s=h)h=h-link;elseh

18、=s;s-link=t;t=s;h=t;2以单链表作为存储结构实现直接插入排序算法。解: void InsertList(List head) Lnode *p, * pprev,q,*qprev, *current;if (!head)return;pprev=head;p=head-next;while (p) q=head;qprev=NULL;while (q-key key) / 查找插入位置qprev=q; q=q-next;if (q= =p) / p 最大,无须插入pprev=p; p=p-next;else current=p; p=p-next;pprev-next=p;c

19、urrent-next=q;if (q=head) / 插在表头head=current;else / 插在中间某个位置上qprev-next=current; 3设计一个算法,使得在尽可能少的时间内重排数组,将所有取负值的关键字放在所有取非负值的关键字之前。解: void part (int a ) i=1;j=n; / 初、终下标while (i=0) / 自右向左找非负数j-; while (ikey=x;s-next= NULL;if (head= =NULL)head=s;else p=head;q= NULL;while ( p! =NULL) p=p-next; if (q= =

20、NULL) s-next=head; head=s; else if (p=NULL)q-next=s;else s-next=q-next; q-next=s; 排序过程分析1 已知数据序列50,60,40,20,80,15,10,45,试画出采用快速排序法,第一趟排序的结果。解:45,10,40,20,15 50 80,602 已知数据序列82,40,66,13,84,36,96,57,39,80,61,14,写出二路归并排序的每一趟排序结果。解:82 40 66 13 84 36 96 57 39 80 61 1440 82 13 66 36 84 57 96 39 80 14 61 第

21、一趟排序结果13 40 66 82 36 57 84 96 14 39 61 80 第二趟排序结果13 36 40 57 66 82 84 96 14 39 61 80 第三趟排序结果13 14 36 39 40 57 61 66 80 82 84 96 第四趟排序结果3 已知数据序列40,63,11,84,35,93,58,39,15,写出采用简单选择排序的每一趟排序结果。解: 40 63 11 84 35 93 58 39 15(11) 63 40 84 35 93 58 39 15(11 15) 40 84 35 93 58 39 63(11 15 35) 84 40 93 58 39

22、63(11 15 35 39) 40 93 58 84 63(11 15 35 39 40) 93 58 84 63(11 15 35 39 40 58) 93 84 63(11 15 35 39 40 58 63) 84 93(11 15 35 39 40 58 63 84) 93(11 15 35 39 40 58 63 84 93)4 已知数据序列18,17,60,40,07,32,73,65,写出采用冒泡排序法每一趟排序的结果。解: 18 17 60 40 07 32 73 65第一趟结束时结果: 17 18 40 07 32 60 65 73第二趟结束时结果: 17 18 07 32

23、 40 60 65第三趟结束时结果: 17 07 18 32 40 60第四趟结束时结果: 07 17 18 32 40第五趟结束时结果: 07 17 18 32 已无交换,结束。5 已知数据序列10,18,14,13,16,12,11,9,15,08,写出希尔排序每一趟排序的结果(设 d=5、2、1)。解: 10 18 14 13 16 12 11 09 15 08d=510 11 09 13 08 12 18 14 15 16d=208 11 09 12 10 13 15 14 18 16d=1 08 09 10 11 12 13 14 15 16 186 已知数据序列39,28,55,8

24、0,75,06,17,45,写出采用直接插入算法排序时,每一趟排序的结果。解: 39 28 55 80 75 06 17 45第一趟结束时结果: 28 39 55 80 75 06 17 45第二趟结束时结果: 28 39 55 80 75 06 17 45第三趟结束时结果: 28 39 55 80 07 32 73 65第四趟结束时结果: 07 28 39 55 80 32 73 65第五趟结束时结果: 07 28 32 39 55 80 73 65第六趟结束时结果: 07 28 32 39 55 73 80 65第七趟结束时结果: 07 28 32 39 55 65 73 80程序填空1 设表的长度为 L,试填空完成直接插入排序程序。void insertsort(int R ) / 按递增序对 R1 R n 进行直接插入排序 int i,j;for ( i=2; i=high+1;j-)

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。