Advertisement
Guest User

Merge Sort

a guest
Nov 28th, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. # include <iostream>
  2. using namespace std;
  3.  
  4. int n, arr[100];
  5.  
  6. int INF = 1<<15;
  7.  
  8. void merge( int l, int m, int r ) {
  9.     int left[100], right[100], i, j, k;
  10.  
  11.     for( i=l; i<=m; i++ ) left[i-l]=arr[i];
  12.     left[i-l] = INF;
  13.  
  14.     for( i=m+1; i<=r; i++ ) right[i-m-1] = arr[i];
  15.     right[i-m-1] = INF;
  16.  
  17.     i=j=0;
  18.     k=l;
  19.     while( k<=r ) {
  20.         if( left[i]<=right[j] ) arr[k++] = left[i++];
  21.         else arr[k++] = right[j++];
  22.     }
  23. }
  24.  
  25. void merge_sort( int l, int r ) {
  26.     if( r-l<1 ) return;
  27.  
  28.     int m = (l+r)>>1;
  29.     merge_sort( l, m );
  30.     merge_sort( m+1, r );
  31.     merge( l, m, r );
  32. }
  33.  
  34. int main() {
  35.     cin>>n;
  36.     for( int i=0; i<n; i++ ) cin>>arr[i];
  37.     merge_sort( 0, n-1 );
  38.  
  39.     for( int i=0; i<n; i++ ) cout << arr[i] << " "; cout << endl;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement