归并排序中的分治思想
void merge(int arr[], int low, int mid, int high)
{
int* num = new int[high - low + 1];
int i = low, j = mid + 1,k = 0;
while (i <= mid && j <= high)
{
if (arr[i] < arr[j]) num[k++] = arr[i++];
else num[k++] = arr[j++];
}
while (i <= mid) num[k++] = arr[i++];
while (j <= high) num[k++] = arr[j++];
int m;
for (i = low, m = 0; i <= high; i++) arr[i] = num[m++];
delete[] num;
}
void merge_sort(int arr[], int low, int high)
{
if (low < high)
{
int mid = (low + high) / 2;
merge_sort(arr, low, mid);
merge_sort(arr, mid + 1, high);
merge(arr, low, mid, high);
}
}