归并排序
#归并排序
#归并排序算法实现
时间复杂度:O(nlog n)
空间复杂度:O(n)
//归并排序
int a[Num];
void Merge(int arr[], int low, int midle, int high)
{
int i=0, j=0, k=0;
for (k = low; k <= high; k++)
a[k] = arr[k];
for (i = low, j = midle + 1, k = i; i <= midle && j <= high; k++)
{
if (a[i] <= a[j])
arr[k] = a[i++];
else
arr[k] = a[j++];
}
while (i <= midle)
arr[k++] = a[i++];
while (j <= high)
arr[k++] = a[j++];
}
void MergeSort(int arr[], int low, int high)
{
if (low < high)
{
int middle = (low + high) / 2;
MergeSort(arr, low, middle);
MergeSort(arr, middle + 1, high);
Merge(arr, low, middle, high);
}
}