fork download
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. // your code goes here
  5. int n,i;
  6. scanf("%d",&n);
  7. int a[n];
  8. for(i=0;i<n;i++)scanf("%d",&a[i]);
  9. mergesort(a,0,n-1);
  10. for(i=0;i<n;i++)printf("%d ",a[i]);
  11. return 0;
  12. }
  13. void merge(int a[],int l,int m,int r){
  14. int i,j=0,n1=m-l+1;
  15. int n2=r-m,k=0;
  16. int x[n1],y[n2];
  17. for(i=0;i<n1;i++)x[i]=a[i];
  18. for(i=0;i<n2;i++)y[i]=a[n1+i];
  19. while( (i<n1 || j<n2) && k<=r){
  20. if(x[i]>y[j]){
  21. a[k]=y[j];
  22. j++;
  23. }
  24. else{
  25. a[k]=x[i];
  26. i++;
  27. }
  28. k++;
  29. }
  30.  
  31.  
  32. }
  33. void mergesort(int a[],int l,int r){
  34. if(l<r){
  35. int m = (l+r)/2;
  36. mergesort(a,l,m);
  37. mergesort(a,m+1,r);
  38. merge(a,l,m,r);
  39. }
  40. }
Success #stdin #stdout 0s 10320KB
stdin
5
6 2 5 3 4
stdout
0 0 2 0 0