Facebook
From Ja L O L, 4 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 191
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. void sortowanie_kopcowe( int * tablica, int rozmiar )
  8. {
  9.     int i, j;
  10.     for( int m = 2; m <= rozmiar; m++ )
  11.     {
  12.         i = m;
  13.         j = i / 2;
  14.         while(( tablica[ i ] > tablica[ j ] ) &&( j > 0 ) )
  15.         {
  16.             swap( tablica[ i ], tablica[ j ] );
  17.             i = j;
  18.             j = i / 2;
  19.         }
  20.     }
  21.     //kolejna czeœæ programu która bêdzie sortowa³a tablicê
  22.     int p;
  23.     for( int m = rozmiar; m > 1; m-- )
  24.     {
  25.         swap( tablica[ 1 ], tablica[ m ] ); // m-przechowuje koniec aktualnego kopca
  26.         i = 1;
  27.         j = 2;
  28.  
  29.         while( j < m )
  30.         {
  31.             if(( j + 1 < m ) &&( tablica[ j ] < tablica[ j + 1 ] ) )
  32.                  p = j + 1;
  33.             else
  34.                  p = j;
  35.  
  36.             if( tablica[ p ] <= tablica[ i ] )
  37.                  break;
  38.  
  39.             swap( tablica[ p ], tablica[ i ] );
  40.             i = p;
  41.             j = i + i;
  42.         }
  43.     }
  44. }
  45.  
  46.  
  47. int main( int argc, char * argv[] )
  48. {
  49.     int k = rand();
  50.     int n;
  51.     int * tab;
  52.     srand( time( 0 ) );
  53.     cout << "Podaj rozmiar tablicy: " << endl;
  54.     cin >> n;
  55.     tab = new int[ n ];
  56.     for( int i = 0; i < n; i++ )
  57.     {
  58.         tab[ i ] = rand() %( 101 );
  59.         cout << " " << tab[ i ];
  60.     }
  61.     sortowanie_kopcowe( tab, n - 1 );
  62.     cout << endl;
  63.     for( int i = 0; i < n; i++ )
  64.     {
  65.         cout << " " << tab[ i ];
  66.     }
  67.  
  68.  
  69.  
  70.     system( "PAUSE" );
  71.     return EXIT_SUCCESS;
  72. }
  73.