fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. void merge2(int a1[], int low, int mid, int high){
  8. int gap = (high-low+2)/2;
  9.  
  10. while(gap>=1){
  11. int i=0,j=i+gap;
  12.  
  13. while(j<=high){
  14.  
  15. if(a1[i]>a1[j]) swap(a1[i],a1[j]);
  16. i++;j++;
  17. }
  18.  
  19. int temp = gap;
  20. gap = (gap+2-1)/2;
  21. if(temp==gap==1) break;
  22. }
  23. }
  24.  
  25. void mergeSort(int a[], int low, int high){
  26. if(low>=high) return;
  27. int mid = low+(high-low)/2;
  28. mergeSort(a,low,mid);
  29. mergeSort(a,mid+1,high);
  30. merge2(a,low,mid,high);
  31.  
  32. }
  33.  
  34. int main(){
  35.  
  36.  
  37. int n; cin>>n;
  38. int arr[n];
  39. for (int i = 0; i < n; i++)
  40. {
  41. cin>>arr[i];
  42. }
  43. mergeSort(arr,0,n-1);
  44. for (int i = 0; i < n; i++)
  45. {
  46. cout<<arr[i]<<'\n';
  47. }
  48.  
  49. return 0;
  50. }
Success #stdin #stdout 0.01s 5496KB
stdin
5
5 4 3 2 1
stdout
1
2
3
4
5