10.5 归并排序 v基本思想 将两个或两个以上的有序子序列“归并”为一个有 序序列。 在内部排序中,通常采用的是2-路归并排序。即 :将两个位置相邻的有序子序列归并为一个有序 序列。 ri rm rm+1 rn 有序 有序 有序 ri rn10.5 归并排序 v如何进行两路归并? 将两个有序表的元素进行比较,小者复制到 目标表中。 (5 ,24 ,35 ,74 ,222 ) (19 ,23 ,30 ) ( )5 24 35 74 222 ( ) 19 23 30 ( ) i j ( ) k 5 19 23 24 30 35 74 222 两路归并动画演示 i k j k j k i k j k s m t m+110.5 归并排序 void Merge (int r , int r1 , int s, int m, int t ) /*将有序列rs.m和rm+1.t两路归并为r1 */ i=s; j=m+1; k=s; while (i=m else r1k+=rj+; while (i=m) r1k+=ri+; /前一个子序列剩下的 while (j=t) r1k+=rj+; /后