对含有n(n>0)个记录的文件进行外部排序,采用置换-选择排序生成初始归并段时需要使用一个工作区,工作区中能保存m个记录,请回答下列问题。
(1)如果文件有19个记录,其关键字是51,94,37,92,14,63,15,99,48,56,23,60,31,17,42,8,90,166,100。当m=4时,可生成几个初始归并段,各是什么?(2)对任意m(n>>m>0),生成的第一个初始归并段最大可能长度,最小可能长度分别是?
答:(1)生成了三个初始段,分别为:① 37,51,63,92,94,99;② 14,15,23,31,48,56,60,90,166;③ 8,17,42,100。(2)对任意m,生成的第一个初始归并段最大可能长度为n,最小可能长度为m。
(1)假设初始待排序文件为输入文件FI,初始归并段文件为输出文件FO,内存工作区为WA,FO和WA初始为空,并设内存工作区WA的容量可容纳w个记录。则置换-选择排序的操作过程为:① 从FI输入w个记录到缓冲区WA。② 从WA中选出其中关键字取最小值的记录,记为MINIMAX记录。③ 将MINIMAX记录输出到FO中去。④ 若FI不空,则从FI输入下一个记录到WA中。⑤ 从WA中所有比MINIMAX记录的关键字大的记录中选出最小关键字记录,作为新的MINIMAX记录。⑥ 重复(3)~(5),直到在WA中选不出新的MINIMAX为止,由此得到一个初始归并段,输出归并段结束标志到FO中。⑦ 重复(2)~(6),直到WA为空,由此得到全部初始归并段。根据上述思想,对题干所示的记录进行排序的过程如下:
(2)对任意m,生成的第一个初始归并段最大可能长度为n。若FI中的记录为升序序列,则初始归并段的长度即为n。在最坏情况下,初始时进入WA的m个记录是一定能被输出到第一个归并段中的,因此最小可能长度为m。
扫描微信二维码,添加您的专属老师为好友
您在考试中遇到任何问题,老师都会帮您解答
您希望我们通过哪种方式与您联系?
您已选择电话/微信/QQ的联系方式,课程顾问会尽快联系您!
您已选择微信联系方式,课程顾问会尽快添加您的微信,请您确认通过!
您已选择QQ联系方式,课程顾问会尽快添加您的QQ,请您确认通过!
您已选择电话联系方式,课程顾问会尽快联系您!
您已选择“不联系”,课程顾问不会主动联系您。如果后续您有需求,可以在个人中心主动添加销售微信或拨打客服电话:400-111-9811