c++.使用函数模板完成两个有序数组的排序,但是我第二个数组的第一个数每次都不参与排序直接输出了

#include <iostream>
using namespace std;

template <class T1>
void f(T1* a, T1* b, int alen, int blen)
{
    for (int i = 0; i < blen; i++)
    {
        a[alen + i] = b[i];
    };
}

template <class T>
void Merge(T* a, T* c, int low, int mid, int high)
{
    int left = low;
    int right = mid + 1;
    int k = low;

    while (left < mid + 1 && right < high + 1)
    {

        if (a[left] > a[right])
        {
            c[k++] = a[right++];
        }
        else
        {
            c[k++] = a[left++];
        };
    };

    while (left < mid + 1)
    {
        c[k++] = a[left++];
    };
    while (right < high + 1)
    {
        c[k++] = a[right++];
    };
};

//内部使用递归
template <class T>
void MergeSort(T*a, T*c, int low, int high)
{
    if(low >= high)
    {
        return;
    }
    //int mid = low + ((high - low) >> 1);
    int mid = (low +high) / 2;
        MergeSort(a,c, low,mid);
        MergeSort(a, c, mid+1,high);
        Merge(a, c, low, mid, high);
}

int main()
{
    double a[9] = {1.10,2.30,4.10,5.70};
    double b[5] = {0.30,1.40,1.60,1.80,3.20};
    double c[9];
    f<double>(a, b, 4, 5);
    cout << "归并排序前:";
    for (int i = 0; i < 9; i++)
    {
        cout << a[i] << "  ";
    };
    cout << endl;
    MergeSort<double>(a, c, 0, 8);
    cout << "归并排序后:";
    for (int i = 0; i < 9; i++)
    {
        cout << c[i] << "  ";
    };
    return 0;
}