递归实现
#include <iostream>
#include <stdio.h>
const int maxn = 100;
int a[maxn];
void merge(int a[], int l1, int r1, int r1, int r2)
{
int i = l1, j = l2;
int temp[maxn], index = 0;
while(i <= r1 && j <= r2){
if(a[i] <= a[j])
temp[index++] = a[i++];
else
temp[index++] = a[j++];
}
while(i <= r1) temp[index++] = a[i++];
while(j <= r2) temp[index++] = a[j++];
for(int k = 0; k < index; k++)
a[l1 + k] = temp[k];
}
void mergeSort(int a[], int left, int right)
{
if(left < right){
int mid = (left + right) / 2;
mergeSort(a, left, mid);
mergeSort(a, mid + 1, right);
merge(a, left, mid, mid + 1, right);
}
}
int main()
{
mergeSort(a, 0, maxn -1);
return 0;
}