第4章 查找和排序习题解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.已知长度为12的表(Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec)。
(1) 试按表中元素的顺序依次插入一棵初始为空的二叉排序树,请画出插入完成之后的二叉排序树,并求其在等概率情况下查找成功的平均查找长度。
(2) 若对表中元素先进行排序构成有序表,求在等概率情况下对此有序表进行折半查找时查找成功的平均查找长度,并画出相应的判定树。
解:(1)
Jan
Feb Mar
Apr June May
Aug July Sep
Dec Oct
Nov
在等概率情况下平均查找长度=(1*1+2*2+3*3+4*3+5*2+6*1)/12 =7/2 (2)经排序后的表及在折半查询时找到表中元素所需比较的次数为:Apr Aug Dec Feb Jan July June Mar May Nov Oct Sept
3 4 2 3 4 1 3 4 2 4 3 4
在等概率情况下平均查找长度=(1*1+2*2+3*4+4*5)=37/12
5.用以下关键字序列构造两个哈希表(每个哈希表的地址空间为0~16):(Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec)。H(x) = i DIV 2,其中i为关键字x中第一个字母在字母表中的序号。
(1) 用线性探测再散列法处理冲突;
(2) 用链地址法处理冲突。
并分别求这两个哈希表在等概率情况下查找成功的平均查找长度。解:
(1)
在等概率情况下平均查找长度=(1+2+1+1+1+1+2+4+5+2+5+6)/12 =31/12
(2)
在等概率情况下平均查找长度=(1+2+1+1+1+2+3+1+2+1+2+1)/12 =18/12
7.有一组待排序的记录,其关键字为18,5,20,30,9,27,6,14,45,22。写出用下列方法进行排序时,每一趟排序后的结果及关键字比较次数。
(1) 直接插入排序;
(2) 简单选择排序;
(3) 冒泡排序;
(4) 快速排序;
(5) 归并排序。
解:
假设以从小到大排序:
1.直接插入排序
第一步:{5,18} 20,30,9,27,6,14,45,22 比较1次
第二步:{5,18,20} 30,9,27,6,14,45,22 比较2次
第三步:{5,18,20,30} 9,27,6,14,45,22 比较3次
依次类推……
2.简单选择排序:
第一步:{5} 18,20,30,9,27,6,14,45,22 比较9次
第二步:{5,6} 18,20,30,9,27,14,45,22 比较8次
第三步:{5,6,9} 18,20,30,27,14,45,22 比较7次
依次类推(每次选出最小的出来)……
3.冒泡排序:
第一步:{5,18,20,9,27,6,14,30,22} 45 比较9次
第二步:{5,18,9,20,6,14,27,22} 30,45 比较8次
第三步:{5,9,18,6,14,20,22} 27,30,45 比较7次
依次类推(比较相邻的,逆序的话则互换)……
4.快速排序:
第一步:{14,5,6,9} 18 {27,30,20,15,22} 比较9次
第二步:{9,5,6} 14,18 {22,20} 27 {45,30} 比较7次
第三步:{6,5} 9,14,18,20,22,27,30,45 比较4次
第四步:5,6,9,14,18,20,22,27,30,45 比较1次
5.归并排序(以2-路归并为例):
原序列:{18,5} {20,30} {9,27} {6,14} {45,22}
第一步:{5,18} {20,30} {9,27} {6,14} {22,45} 比较5次第二步:{5,18,20,30}{6,9,14,27} {22,45} 比较5次
第三步:{5,6,9,14,18,20,27,30} {22,45} 比较7次
第四步:{5,6,9,14,18,20,22,27,30,45} 比较9次