//归并排序 从小到大排序
#include<iostream>
using namespace std;
int arr[10]={10,88,3,7,6,38,87,90,1,19};
void Merge(int l,int m,int h);
void MergeSort(int low,int high)
{
int mid;
if(low<high)
{
mid=(low+high)/2;
MergeSort(low,mid);
MergeSort(mid+1,high);
Merge(low,mid,high);
}
return;
}
void Merge(int low,int m,int h)
{
int temparr[10]={0};
int p=low,i=low,j=m+1;
while(p<=m &&j<=h)
{
if(arr[p]<=arr[j])
{
temparr[i]=arr[p];
p++;
}
else
{
temparr[i]=arr[j];
j++;
}
i++;
}
if(p>m)
{
for(int k=j;k<=h;k++)
{
temparr[i]=arr[k];
i++;
}
}
else
{
for(int k=p;k<=m;k++)
{
temparr[i]=arr[k];
i++;
}
}
for(int k=low;k<=h;k++)
{
arr[k]=temparr[k];
}
return ;
}
int main()
{
MergeSort(0,9);
for(int i=0;i<10;i++)
cout<<arr[i]<<endl;
return 0;
}