Advertisement
mhdew

Merge Sort

Dec 9th, 2018
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4. #define MAX 10000
  5.  
  6. int a[111111];
  7.  
  8. void merg(int a[],int s, int mid, int e)
  9. {
  10.     int left=mid-s+1;
  11.     int right=e-mid;
  12.     int leftA[11111];
  13.     int rightA[11111];
  14.     for(int i=0;i<left;i++){
  15.         leftA[i]=a[s+i];
  16.     }
  17.     leftA[left]=MAX;
  18.     for(int i=0;i<right;i++){
  19.         rightA[i]=a[mid+1+i];
  20.     }
  21.     rightA[right]=MAX;
  22.  
  23.     int limit=(left+right);
  24.     int j=0, k=0;
  25.     for(int i=0;i<limit;i++){
  26.         if(leftA[j]<rightA[k]){
  27.             a[i]=leftA[j];
  28.             j++;
  29.         }
  30.         else{
  31.             a[i]=rightA[k];
  32.             k++;
  33.         }
  34.     }
  35.  
  36. }
  37.  
  38. void mergeSort(int a[], int s, int e)
  39. {
  40.     if(s<e){
  41.         int mid=(s+e)/2;
  42.         mergeSort(a,s,mid);
  43.         mergeSort(a,mid+1,e);
  44.         merg(a,s,mid,e);
  45.     }
  46. }
  47.  
  48. int main()
  49. {
  50.     int n;
  51.     scanf("%d", &n);
  52.     int a[n+3];
  53.     for(int i=0;i<n;i++) scanf("%d", &a[i]);
  54.  
  55.     mergeSort(a,0,n);
  56.  
  57.     for(int i=0;i<n;i++) printf("%d ", &a[i]);
  58.     printf("\n");
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement