trafka

SORTOWANIE KOPCOWE

Jan 18th, 2018
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<ctime>
  4. //kopcowe
  5. using namespace std;
  6.  
  7. void wstaw(int tab[],int n)  //funkcja zape³niaj¹ca tablicê
  8. {
  9.     for(int i=0; i<n; i++)
  10.         tab[i]=rand()%10;
  11. }
  12.  
  13. void drukuj(int tab[],int n)
  14. {
  15.     for(int i =0; i<n; i++)
  16.         cout<<tab[i]<<" ";
  17.     cout<<endl;
  18. } //funkcja do wyœwietlenia tablicy
  19.  
  20. void zanurzanie(int i, int kolejka[], int rozmiarKolejki)
  21. {
  22.     int l=2*i+1;
  23.     int r=2*i+2;
  24.     int wiekszy = i;
  25.     if(l<rozmiarKolejki&&kolejka[l]>kolejka[wiekszy])//l<N-1
  26.         wiekszy=l;
  27.     if(r<rozmiarKolejki&&kolejka[r]>kolejka[wiekszy])//N-1
  28.         wiekszy=r;
  29.     if(wiekszy!=i)
  30.     {
  31.         swap(kolejka[wiekszy],kolejka[i]);
  32.         zanurzanie(wiekszy,kolejka,rozmiarKolejki);
  33.     }
  34. }
  35.  
  36. void utworzKopiec(int tab[],int n)
  37. {
  38.     for(int i =n/2; i>=0; i--)
  39.         zanurzanie(i,tab,n);
  40. }
  41. void sortuj(int tab[], int n)
  42. {
  43.     utworzKopiec(tab,n);
  44.     for(int i = n; i>=1; i--)
  45.     {
  46.         swap(tab[0],tab[n-1]);
  47.         --n;
  48.         zanurzanie(0,tab,n);
  49.     }
  50. }
  51.  
  52. int main(int argc, char *argv[])
  53. {
  54.     srand(time(NULL));
  55.     const int N=10;
  56.     int tab[N];
  57.     wstaw(tab,N);
  58.     drukuj(tab,N);
  59.     sortuj(tab,N);
  60.     drukuj(tab,N);
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment