fork download
  1. #include <stdio.h>
  2. #define length 2000005
  3.  
  4.  
  5. void mergesort(int arr[], int low, int mid, int high){
  6. int left, right,temp[length],i,k;
  7. left= low;
  8. right= mid+1;
  9. i= low;
  10.  
  11. while((left<=mid) && (right<=high)){
  12. if(arr[left]<=arr[right]){
  13. temp[i]= arr[left];
  14. left++;
  15.  
  16. }
  17. else{
  18. temp[i]= arr[right];
  19. right++;
  20. }
  21. i++;
  22. }
  23.  
  24. while(left<=mid){
  25. temp[i]= arr[left];
  26. i++;
  27. left++;
  28. }
  29.  
  30. while(right<=high){
  31. temp[i]= arr[right];
  32. right++;
  33. i++;
  34. }
  35.  
  36. for(k= low;k<=high;k++)
  37. arr[k]= temp[k];
  38.  
  39. }
  40.  
  41. void divide(int arr[], int low, int high){
  42.  
  43. int mid;
  44. if(low<high){
  45. mid= (low+high)/2;
  46. divide(arr, low, mid);
  47. divide(arr, mid+1, high);
  48. mergesort(arr, low, mid, high);
  49. }
  50.  
  51. }
  52.  
  53. int main(){
  54.  
  55. int n,arr[length],k,i,j,p;
  56. while(scanf("%d",&n) && n!= 0){
  57.  
  58. for(i=0;i<n;i++)
  59. scanf("%d",&arr[i]);
  60.  
  61. divide(arr,0,n-1);
  62.  
  63. for(k= 0;k<n-1;k++)
  64. printf("%d ",arr[k]);
  65. printf("%d",arr[k]);
  66. printf("\n");
  67.  
  68.  
  69. }
  70.  
  71.  
  72.  
  73. return 0;
  74. }
  75.  
  76.  
  77.  
  78.  
Success #stdin #stdout 0s 9848KB
stdin
Standard input is empty
stdout
Standard output is empty