设某文件经内排序后得到100个初始归并段(初始顺串),若使用多路归并排序算法,并要求三趟归并完成
设某文件经内排序后得到100个初始归并段(初始顺串),若使用多路归并排序算法,并要求三趟归并完成排序,问归并路数最少为多少?【山东大学1992一、4(3分)】【东南大学1999一、3(5分)】
设某文件经内排序后得到100个初始归并段(初始顺串),若使用多路归并排序算法,并要求三趟归并完成排序,问归并路数最少为多少?【山东大学1992一、4(3分)】【东南大学1999一、3(5分)】
不含用于I/O缓冲区、程序变量等的存储空间)。使用置换-选择排序生成初始归并段和多路平衡归并进行外排序。要求平衡归并趟数只允许2趟。那么,能够得到的有序文件最长为多少?详细说明计算过程。
(1)建立初始堆.
①从输入文件中输入p个记录,建立大小为p的堆。
②为第一个初始归并段选择一个适当的磁盘文件作为输出文件。
(2)置换-选择。
内存工作区存在两个堆:当前堆和新堆,新堆紧接在当前堆后存放,总大小为p。
①输出当前堆的堆顶记录到选定的输出文件。
②从输入文件中输入下一个记录。若该记录排序码的值不小于刚输出记录排序码的值,则由它取代堆顶记录,并调整当前堆。若该记录排序码的值小于刚输出记录的排序码的值,则由当前堆的堆底记录取代堆顶记录,当前堆的大小减1。新输入的记录存放在当前堆的原堆底记录的位置上,成为新堆的一个记录。
③如果新堆的记录个数大于「p/2,应着手调整新堆;如果新堆中已有p个记录,表示当前堆已输出完毕,当前的初始归并段结束、应开始创建下一个初始归并段,因此必须另为新堆选择一个磁盘文件作为输出文件。
④重复步骤②~③,直到输入文件输入完毕。
(3)输出剩余记录。
①输出当前堆中的剩余记录,并对输出边调整。
②将内存工作区中的新堆作为最后一个初始归并段输出。
设p=5,排序码序列为(54,15,62,10,77,24,29,20,59,43,69,31,47,38,12,18,51,27),执行置换选择排序的结果如图10-19(a)~图10-19(g)所示.
生成的3个初始归并段为(10,15,24,29,54,59,62,69,77),(20、31,38,43,47,51),(12,18,27)。编写一个算法,实现上述利用堆的置换-选择排序.
败者树进行k路归并,手工给出执行选择最小的5个排序码的过程。
(1)可以建立多少个初始归并段?每个初始归并段有多少个记录?存放于多少个块中?
(2)应采用几路归并?请写出归并过程及每趟需要读写磁盘的块数。
110,21,40。现采用置换-选择方法生成初始归并段,并假设内存工作区可同时容纳5个记录,请画出选择的过程
下列内部排序算法中在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k<<n)的情况下,排序效率最高的算法是()。
A.冒泡排序
B.堆排序
C.直接插入排序
D.二路归并排序