fork(1) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. void Merge(int Left[],int Right[],int arr[],int nL,int nR){
  4. int i=0,j=0,k=0;
  5.  
  6. while(i<nL && j<nR){
  7. if(Left[i]<=Right[j]){
  8. arr[k++]=Left[i++];
  9. }
  10. else{
  11. arr[k++]=Right[j++];
  12. }
  13. }
  14.  
  15. while(i<nL){
  16. arr[k++]=Left[i++];
  17. }
  18.  
  19. while(j<nR){
  20. arr[k++]=Right[j++];
  21. }
  22. }
  23. void MergeSort(int arr[],int n){
  24. if(n<2) return;
  25. int mid=n/2;
  26. int nL=mid;
  27. int nR=(n-mid);
  28. int Left[nL],Right[nR];
  29. for(int i=0;i<nL;i++) Left[i]=arr[i];
  30. for(int i=nL;i<n;i++) Right[i-mid]=arr[i];
  31.  
  32. MergeSort(Left,nL);
  33. MergeSort(Right,nR);
  34. Merge(Left,Right,arr,nL,nR);
  35.  
  36. }
  37. int main()
  38. {
  39. int n,arr[100005];
  40. scanf("%d",&n);
  41. for(int i=0;i<n;i++) scanf("%d",&arr[i]);
  42. MergeSort(arr,n);
  43. for(int i=0;i<n;i++) printf("%d ",arr[i]);
  44. printf("\n");
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0s 16328KB
stdin
Standard input is empty
stdout