递归实现:
#include<iostream>
using namespace std;
void printArr(int *arr, int length) //打印数组
{
for (int i = 0; i < length; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
//合并两个已经排好序的子数组,子数组1 [start,mid) 和 子数组2 [mid,end)
void merge(int *arr, int start, int mid, int end)
{
int *temp = (int *)malloc(sizeof(int)*(end - start));
int i = start;
int j = mid;
int index = 0;
while (index + start < end)
{
if (i < mid && (j == end || arr[i] < arr[j]))
{
temp[index++] = arr[i++];
}
else
{
temp[index++] = arr[j++];
}
}