这不是最基本的归并排序么。
template<class T>
void joinsort(T* dst, T* src1, T* src2, int length1, int length2)
{
int length = length1+length2;
dst = new T[length];
T* src1end = src1+length1;
T* src2end = src2+length2;
while(src1!=src1end && src2!=src2end)
{
if(*src1<*src2)
{
*dst = *src1;
src1++;
}else
{
*dst = *src2;
src2++;
}
dst++;
}
if(src1!=src1end)
{
memcpy(dst,src1,sizeof(T)*(src1end-src1));
}else
{
memcpy(dst, src2, sizeof(T)*(src2end-src2));
}
}
注意用完之后自行delete[] dst;
另外,你数组里面元素类型要支持<操作符
温馨提示:内容为网友见解,仅供参考