1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
#include<bits/stdc++.h>
using namespace std;
int merge(int *a,int low,int high,int mid)
{
int i,j,k,temp[high-low+1],count=0,count2=0;
i=low;
k=0;
j=mid+1;
while(i<=mid&&j<=high)
{
if(a[i]<a[j])
{
temp[k]=a[i];
k++;
i++;
}
else
{
temp[k]=a[j];
k++;
j++;
count+=mid-i;
}
}
while(i<=mid)
{
temp[k]=a[i];
k++;
i++;
}
while(j<=high)
{
temp[k]=a[j];
k++;
j++;
}
for (int i = low; i <= high; ++i)
{
a[i]=temp[i-low];
}
}
int mergesort(int *a,int low,int high)
{
int mid=0;
if(low<high)
{
mid=low+(high-low)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,high,mid);
}
}
int main()
{
int n,i;
cin>>n;
int a[n];
for (int i = 0; i < n; ++i)
cin>>a[i];
for (int i = 0; i < n; ++i)
cout<<a[i]<<" ";
}
| |