fork download
  1. #include <iostream>
  2. using namespace std;
  3. void merge(int *a,int l ,int mid,int r){
  4. int n1=mid-l+1;
  5. int n2=r-mid;
  6. int A[n1],B[n2];
  7. int i=0,j=0,k=l;
  8. for(int i=0;i<n1;i++){
  9. A[i]=a[l+i];
  10. }
  11. for(int i=0;i<n2;i++){
  12. B[i]=a[mid+1+i];
  13. }
  14. while(i<n1 && j<n2){
  15. if(A[i]<B[j]){
  16. a[k]=A[i];
  17. i++;
  18. }
  19. else{
  20. a[k]=B[j];
  21. j++;
  22. }
  23. k++;
  24. }
  25. while(i<n1){
  26. a[k]=A[i];
  27. k++;
  28. i++;
  29. }
  30. while(j<n2){
  31. a[k]=B[j];
  32. k++;
  33. j++;
  34. }
  35.  
  36.  
  37. }
  38. void mergesort(int *a,int l,int r){
  39. if(l<r){
  40. int mid=(l+r)/2;
  41. mergesort(a,l,mid);
  42. mergesort(a,mid+1,r);
  43. merge(a,l,mid,r);
  44. }
  45. }
  46. int main() {
  47. int n;
  48. cin>>n;
  49. int a[n];
  50. for(int i=0;i<n;i++){
  51. cin>>a[i];
  52. }
  53. mergesort(a,0,n-1);
  54. for(int i=0;i<n;i++){
  55. cout<<a[i]<<" ";
  56. }
  57. return 0;
  58. }
Success #stdin #stdout 0.01s 5524KB
stdin
8
1 3 4 2 6 10 54 43
stdout
1 2 3 4 6 10 43 54