Guest User

Untitled

a guest
Jul 19th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. void merge(int *a, int p, int q, int r, int *to)
  5. {
  6.     int i=p;
  7.     int j=q;
  8.     while( i<q && j<r )
  9.     {
  10.         if( a[i] <= a[j] )
  11.             *to++ = a[i++];
  12.         else
  13.             *to++ = a[j++];
  14.     }
  15.  
  16.     while( i<q )
  17.         *to++ = a[i++];
  18.     while( j<r )
  19.         *to++ = a[j++];
  20. }
  21.  
  22. void sort( int* a, int size )
  23. {
  24.     int *tmp = new int[size];
  25.     int *src = a;
  26.     int *dst = tmp;
  27.     for( int i=1; i<=size; i=i*2)
  28.     {
  29.         for( int j=0; j<size; j=j+2*i)
  30.         {
  31.             merge( src, j, min(j+i, size), min(j+2*i,size), dst+j );
  32.         }
  33.         swap(src, dst);
  34.     }
  35.     if( src!=a )
  36.         merge(tmp, 0, size, size, a);
  37.  
  38.     delete [] tmp;
  39. }
  40. int main()
  41. {
  42.     const int size = 6;
  43.     int tab[] = {9,4,3,7,12,1};
  44.     sort(tab, size);
  45.     for( int i=0; i<size; i++ )
  46.         cout<<tab[i]<<" ";
  47.     cout<<endl;
  48. }
Add Comment
Please, Sign In to add comment