#include <iostream>
using namespace std;
void merge_sort_recursive(int unsorted[], int reg[], int start, int end)
{
if (start < end)
{
int nlen = end - start, mid = nlen / 2 + start;
int start1 = start, end1 = mid;
int start2 = mid + 1, end2 = end;
merge_sort_recursive_1(unsorted, reg, start1, end1);
merge_sort_recursive_1(unsorted, reg, start2, end2);
int k = start;
// 扫描第一段和第二段序列,直到有一个扫描结束
while (start1<=end1 && start2<=end2)
{
reg[k++] = unsorted[start1] < unsorted[start2] ? unsorted[start1++] : unsorted[start2++];
}
// 若第一段序列还没扫描完,将其全部复制到合并序列
while (start1<=end1)
{
reg[k++] = unsorted[start1++];
}
// 若第二段序列还没扫描完,将其全部复制到合并序列
while (start2<=end2)
{
reg[k++] = unsorted[start2++];
}
// 将合并序列复制到原始序列中
for (k = start; k <= end; k++)
{
unsorted[k] = reg[k];
}
}
}
int main(int argc, char **argv)
{
int arry[] = {134,123,321,24,132,142,145,432,211,654,23,12,321,543,745,73,4,3,213,566,77};
int nlen = sizeof(arry) / sizeof(int*);
merge_sort_recursive(arry, preg, 0, nlen1-1);
for (int i = 0; i < nlen1; i++)
{
cout << array[i] << endl;
}
return 0;
}