Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void hs()
- {
- int r, d, temp,zam;
- int *tabb = new int[n];
- clock_t at, bt;
- for (int i = 1; i <= n; i++)
- tabb[i] = tab[i-1];
- at = clock();
- for (int i = n; i >=2; i--) //ukladanie kupki, od dolu
- {
- d = i;//dziecko nizej niz rodzic
- r = d / 2;//rodzic nad dzieckiem
- temp = tabb[i];
- while (temp > tabb[r] && r > 0) //tu srawdazamy czy to co mamy w tempie jest wieksze do tego co nad nim
- {
- swap(tabb[d], tabb[r]);
- d = r;
- r = d / 2; // te w linikjki przechodza w gore jesli tak w sensie do rodzica rodzica
- }
- }
- cout << endl << " po zbudowaniu kupki:" << endl;
- for (int i = 1; i <= n; i++)
- cout << tabb[i] << " ";
- for (int i = n; i >= 2; i--) //skladanie kupki,
- {
- swap(tabb[1], tabb[i]);
- r = 1;
- d = r + r;
- while (d < i)//bedzie dzilac dopoki dziecko bedzie mneijsze od i
- {
- if (tabb[r] <= tabb[d + 1])//sprawdzamy czy prawa sciezka jest wieksza
- zam = d + 1;//jak tak to d wieksze o 1 i lecimy prawa sciezka
- else
- zam = d;//jak nie to zostawiamy i lecimy lewa
- swap(tabb[r], tabb[zam]);//zamiana atm gdzie poszlismy
- r = zam;//zwiekszamy rodzica
- d = 2 * r;//i dziecko
- }
- }
- bt = clock();
- cout << endl << " przed:" << endl;
- for (int i = 0; i <= n - 1; i++)
- cout << tab[i] << " ";
- cout << endl << " po:" << endl;
- for (int i = 1; i <= n; i++)
- cout << tabb[i] << " ";
- cout << endl << "czas:" << ((long float)(bt - at)) / CLOCKS_PER_SEC;
- delete tabb;
- powrot();
- }
Advertisement
Add Comment
Please, Sign In to add comment