#include <iostream>
using namespace std;
#define siz 100000000
int a[siz], b[siz];
void merge(int low, int mid, int high)
{
int h=low, i=low, j=mid+1;
while(h<=mid&&j<=high)
if(a[h]<a[j]) b[i++]=a[h++];
else b[i++]=a[j++];
if(h>mid)
for(int k=j;k<=high;k++)
b[i++]=a[k];
else
for(int k=h;k<=mid;k++)
b[i++]=a[k];
for(int k=low;k<=high;k++) a[k]=b[k];
}
void merge_sort(int low, int high)
{
if(low<high)
{
int mid=(low+high)/2;
merge_sort(low,mid);
merge_sort(mid+1,high);
merge(low,mid,high);
}
}
int main()
{
int n;
while(cin>>n)
{
for(int i=1;i<=n;i++) cin>>a[i];
merge_sort(0,n);
for(int i=1;i<=n;i++) cout<<a[i]<<endl;
}
return 0;
}
Merge Sort
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment