二路归并算法思想:将一个无序数组从中间分为两个子数组,子数组又从中间分为两个子数组,按此规则直到数组不可分,再依次对有序子数组进行排序。假如无序数组
下面举一个实例:
如下所示是一个无序的数组{13 7 9 3 14 29 16 1},接下来我们用二路归并法对其进行排序。
首先:找到数组中间的数字3,接下来以{13 7 9 3}(数字3的左边)为一组进行排序,{14 29 16 1}(数字3的右边)为一组进行排序,找寻{13,7,9,3}的中间数字7,(数字7的左边){13,7}为一组,(数字7的右边){9,3}为一组进行排序,,,
==最后的算法过程可简化为如下模式【 {(13,7)(9,3)} {(14,29)(16,1)} 】=》【 { (7,13) (3,9) } {(14,29)(1,16)} 】=》【 { 3,7,9,13} {1,14,16,29}】=》【1,3,7,9,13,14,16,29】
void pai(int a[],int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
pai(a,low,mid);
pai(a,mid+1,high);
merge(a,low,high);
}
}