收藏 分享(赏)

第08章 排序.doc

上传人:kpmy5893 文档编号:8422080 上传时间:2019-06-25 格式:DOC 页数:6 大小:63KB
下载 相关 举报
第08章 排序.doc_第1页
第1页 / 共6页
第08章 排序.doc_第2页
第2页 / 共6页
第08章 排序.doc_第3页
第3页 / 共6页
第08章 排序.doc_第4页
第4页 / 共6页
第08章 排序.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、第八章 排序练习题一、 选择题1当待排序列基本有序的情况下,最佳的排序方法是( )。A. 插入排序 B. 选择排序B. 归并排序 D. 快速排序2设有 1,000 个无序元素,希望选出 10 个最小元素,效率最高的排序方法是( )。A. 快速排序 B 基数排序D. 堆排序 D. 希尔排序3若待排序按关键字基本有序,不能选择哪种排序方法( )。A. 冒泡排序 B. 直接选择排序C. 直接插入排序 D. 快速排序4在下列排序方法,比较次数与待排序列初始状态无关的是( )。A. 选择排序 B. 插入排序C. 希尔排序 D. 冒泡排序5下列排序方法中,不稳定的排序方法是( )。A. 归并排序 B. 直

2、接插入排序C. 冒泡排序 D. 直接选择排序6下列排序方法中,空间复杂度为()的算法的是( )。A. 归并排序 B. 堆排序C. 快速排序 C. 基数排序 7下列排序方法中不属于就地排序算法的是( )。A. 希尔排序 B. 归并排序C. 冒泡排序 D. 堆排序8初始关键字序列为(46,56,18,73,44,30,57,34),经过一趟排序后关键字序列为(34,30,18,44,46,73,57,56),所采用的排序方法是( )。A. 归并排序 B. 堆排序C. 快速排序 C. 基数排序9初始关键字序列为(46,56,18,73,44,30,57,34) ,进行一趟归并排序结果为( )A. (

3、46,56,18,73,30,44,34,57)B. (18,46,56,73,44,30,57,34)C. (18,30,44,46,56,73,57,34)D. (18,46,56,30,73,44,34,57)10初始关键字序列为(46,56,18,73,44) ,利用筛选算法所建初始堆为( ) 。A. (18,44,46,73,56) B. (18,46,44,56,73)C. (56,73,46,44,18) D. (18,44,46,56,73)11对 n 个关键字不同的记录进行冒泡排序,最多的比较次数是( )。A. n B. n-1 C. n(n-1)/2 D. n(n+1)/2

4、12直接插入的排序在哪种情况下比较次数为 n-1 。( )A. 待排关键字序列为逆序; B. 待排关键字序列有序;C. 待排关键字序列无序; D. 待排关键字局部有序。 13排序平均时间为 O(nlgn)并且是稳定的排序方法是( )。 A. 归并排序 B. 堆排序C. 快速排序 C. 基数排序14当待排序基本有序,应采用哪种排序方法( )。A. 快速排序 B. 堆排序C. 直接选择排序 D. 冒泡排序15当待排序按关键字随机排列,时间特性最好的排序方法是( ) 。A. 插入排序 B. 选择排序C. 快速排序 D. 归并排序二、 填空题 1快速排序在 情况下时间特性最好,在 情况下时间特性最坏,

5、最坏时间复杂度是 。2就稳定性而言,直接选择排序是 的排序方法;基数排序是 的排序方法;堆排序是 的排序方法;希尔排序是 的排序方法。3就空间特性而言,快速排序的空间复杂度为 ;基数排序的空间复杂度为 ;归并排序的空间复杂度为 ,堆排序的空间复杂度为 。4在插入和选择排序中,若初始关键字序列基本有序,应选用 ,若初始序列基本反序应选用 。 5在堆排序和快速排序中,若初始关键字序列基本有序,应选用 ,若初始序列无序选用 。 6初始关键字序列为(12,33,54,27,34,55,2,12,37,68,8)进行一趟希尔排序(设增量为3)则结果为: 。7通常在排序算法中的两个基本操作是 和 。8对

6、n 个元素进行冒泡排序,最多的比较次数是 ;最少的比较次数是 。 9初始关键字序列为(12,33,54,27,34,55,2,12,37,68,8) ,进行直接插入排序,当把 34 插入有序序列需比较的次数是 。10若待排序列元素数 n 较大时,一般选择快速排序、堆排序或归并排序。若要求时间特性好应选择 ,要求空间特性好应选择 ;若要求算法是稳定的有选择 。三、简答题1 简单选择排序算法是否稳定,试举例说明。2 初始关键字序列为 23,12,43,8,45,50,35,调整其为堆结构。3 初始关键字序列为 21,34,14,56,25,73,34,65,79,86,3,7,18 写出希尔排序过

7、程(增量序列为 5,3,1) 。4 初始关键字序列为 23,12,43,8,45,50,35,写出归并排序过程。5 有 n 个不同的英文单词,长度相等,均为 m,若 n50,m=i+1;j-)if(Rj.keyRj+1) tag=1;t=Rj;Rj=Rj+1;Rj+1=t;i+;(1)指出程序功能;(2)若 R 的初始值为:3,18,18 ,23,28,34,45,56,67,算法执行后 R 的值是什么?9阅读下列算法,并回答下列问题: (1)该算法采用何种策略进行排序?(2)算法中 Rn+1的作用是什么?Typedef struct KeyType key;infoType otherinf

8、o; nodeType;typedef nodeType SqListMAXLEN;void sort(SqList R,int n)/n 小于 MAXLEN-1int k;i;for(k=n-1;k=1;k-)if(Rk.keyRk+1.key)Rn+1=Rk;for(i=k+1;Ri.key=x) j-;Li=Lj;while(ij Lj=Li;Li=x;if(i(n+1)/2) s=i+1;else t=i-1;if(i=0)return 0;else return Li;五、程序设计题1 待排序列以单链表形式存储,试实现选择排序算法。2 设计快速排序的非递归算法3将哨兵放在 Rn中,被

9、排序的记录放在 R0n-1中,重写直接插入排序算法。4以单链表作为存储结构实现直接插入排序算法。5试设计一个算法,使得在尽可能少的时间内重排数组,将所有取负值的关键字放在所有取非负值的关键字之前。请分析算法的时间复杂度。6试写一个双向冒泡排序的算法,即在排序过程中交替改变扫描方向。8改写快速排序算法,要求采用三者取中的方法选择划分的基准记录;若当前被排序的区间长度小于等于 3 时,无需继续划分而是采用直接插入方法对其排序。9对给定的 j(1jn),要求在无序的记录 R1n中找到按关键字自小到大排在第 j 个位置上的记录(即在无序集合中找到第 j 个最小元) ,试利用快速排序的划分思想编写算法,

10、实现上述的查找操作。10以单链表为存储结构,写一个直接选择排序算法。 (见同步练习题)11写一个算法 Heapinsert(R,key),将关键字插入到堆 R 中,并保证插入后 R 仍是堆。提示:应为堆 R 增加一个长度属性描述(即改写本章定义的 Seqlist 述,使起含有长度域) ;将 key 先插入 R 中已有元素的尾部,然后从下往上调整,使插入的关键之满足堆性质。请分析算法的时间。12写一个堆删除的算法 leapdelete(R,i),将 Ri从堆 R 中删除,并分析算法的时间。提示:先将 Ri与堆中最后一个元素交换,并将堆长度减 1,然后从位置 i 开始向下调整使其满足堆性质。13已

11、知两个单链表中的元素递增有序,试写一算法将这两个有序表归并成一个递增有序的单链表。算法应利用原有的链表结点空间。14设向量 A0n-1中存很有 n 个互不相同的整数,并且每个元素的值均在 0 到 n-1 之间,试写 1 时间为O(n)的算法将向量 A 排序,结果可输出到另一个向量 B0n-1中。练习题答案一、选择题1A 2D 3D 4A 5D 6B 7B 8C 9A 10A11C 12B 13A 14D 15C二、填空题1待排序列随机排列,待排序列基本有序,O(n );2不稳定,稳定,不稳定,不稳定;3O(lgn),O(n+rd),O(n),O(1);4直接插入,选择排序;5堆排序,快速排序;

12、6 (2,8,37,13,12,54,27,55,68,34)7比较,移动; 8n(n-1)/2,n-1; 97; 10快速,堆,归并;三、简答题1简单选择排序算法是稳定的。举例:初始序列为本 5,5,3;排序结果 3,5,5;2 调整过程如下:23,12,43,8,45,50,3523,12,35,8,45,50,4323,8,35,12,45,50,438,12,35,23,45,50,433希尔排序过程如下:21,34,14,56,25,73,34,65,79,86,3, 7,18 d=5: 3, 7,14 ,56,25,21, 34,18,79,86,73,34,65d=3: 3, 7

13、,14 ,34,18,21, 56,25,34,65,73,79,86,d=1: 3, 7,14 ,18,21,25, 34,34,56,65,73,79,86 4归并排序过程如下:23,12,43,8,45,50,35一趟: 12,23,8 ,43,45,50,35二趟: 8,12,23,43,35,45,50三趟: 8,12,23,35,43, 45,50 5答:采用基数排序时间复杂度最好。因为英文单词长度相同,英文字母是 26 个;可以进行基数排序。n 远远大于 m,基数排序时间复杂度O(m(n+rm))可看成是 O(n),所以,采用基数排序时间复杂度最好。6. 答案初始堆:05,23,16,58,94, 72,65,87第 1 趟:16,23,65,58,94, 72,87 ,05第 2 趟:23,58,65,87,94, 72,16,05第 3 趟:58,72,65,87,94,23,16,05四、阅读程序题 (1) R0=ri; (2) j-; (3) Rj+1=R0;2 (1)双向冒泡排序;(2)R 值为:23,45,3,56, 18,28,67,34,183.(1)直接插入排序;(2)Rn+1的作用是监视哨。4.(1)3,4(2)确定给定序列的中值。

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

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

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


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

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

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