时间开销 = 读写外存时间 + 内部排序时间 (生成初始归并段)+ 内部归并时间
读写磁盘次数 = 文件总块数 * 2(生成初始归并段) + 文件总块数 * 2 * 归并趟数
如果有r个段,每段有n个记录,利用传统的简单选择排序选出最小值,要比较(r - 1) * (nr - 1)次,因为r个段中选出1个最小值要r-1次,而一共有nr个段,只需要选nr-1次就能选出各值的排序
王道上的习题是这样,实际当然是错的了,当选了非常多,只剩最后r个记录时,选出最小值要r-1次,剩r-1个记录,此时要r-2次了,以此类推
优化主要减少归并趟数
增加归并路数k,进行多路平衡归并
代价:增加输入缓冲区、k个归并段要k-1次对比(k路归并要k-1次对比)