归并趟数S=[logm R](向下取整)。从而增加归并路数m可以减少归并趟数S,进而减少访问外存的次数(I/O次数)。然而,当增加归并路数m时,内部归并时间将增加。做内部归并时,在m个元素中选择关键字最小的记录需要比较m-1次。每趟归并n个元素最多需要作(n-1)*(M-1)次比较,S趟归并总共需要的比较次数为:
S*(n-1)*(m-1)=[logmR]*(n-1)*(m-1)=[log2R]*(n-1)*(m-1)/[log2M]
其中的【log2R】*(n-1)在初始归并段个数R于记录个数n一定时是常数。而(m-1)/[log2M]随m增长而增长,则内部归并时间亦随m的增长而增长。这将抵消由于增大m而减少外存访问次数所得到的效益。因此不能使用普通的内部归并排序算法。
为了使内部归并并不受m的增大的影响,引入了败者树。败者树是对树形选择排序的一种变形,可以看作一棵完全二叉树。每个叶结点存放各归并段在归并过程