template<class T,class E>void Merge(DataSortList<T,E>& L1,DataSortList<T,E>& L2, int left,int mid,int right){ //首先把L1中的数据复制到L2这个辅助数组中来 for(int i=left;i<=right;i++) L2=L1;
int p1=left;
//前一个有序序列的首指针 int p2=mid+1;
//后一个有序序列的首指针 int p=left;
//L1中序列最后元素的指针 //再把L2中的数据元素归并到L1中来 while(p1!=mid+1 && p2!=right+1) { if(L2[p1]<=L2[p2]) //如果是前一个有序序列的小 { L1[p]=L2[p1];
//把小的加入到L1中去 p1++;
} else
//如果是后一个有序序列的小 { L1[p]=L2[p2];
p2++;
} p++;
};
//把还剩下几个元素的序列的剩下的元素全部拷入L1中 while(p1!=mid+1) //如果是前个有序列还没有结束 { L1[p]=L2[p1];
p++;p1++;
};
while(p2!=right+1) //如果是后一个有序序列 { L1[p]=L2[p2];
p++;p2++;
};};///////////////////////////////MergeSort