Guest User

Untitled

a guest
Mar 22nd, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. void hs()
  2. {
  3. int r, d, temp,zam;
  4.  
  5. int *tabb = new int[n];
  6. clock_t at, bt;
  7.  
  8. for (int i = 1; i <= n; i++)
  9. tabb[i] = tab[i-1];
  10.  
  11. at = clock();
  12. for (int i = n; i >=2; i--) //ukladanie kupki, od dolu
  13. {
  14. d = i;//dziecko nizej niz rodzic
  15. r = d / 2;//rodzic nad dzieckiem
  16. temp = tabb[i];
  17. while (temp > tabb[r] && r > 0) //tu srawdazamy czy to co mamy w tempie jest wieksze do tego co nad nim
  18. {
  19. swap(tabb[d], tabb[r]);
  20. d = r;
  21. r = d / 2; // te w linikjki przechodza w gore jesli tak w sensie do rodzica rodzica
  22. }
  23. }
  24.  
  25. cout << endl << " po zbudowaniu kupki:" << endl;
  26. for (int i = 1; i <= n; i++)
  27. cout << tabb[i] << " ";
  28.  
  29. for (int i = n; i >= 2; i--) //skladanie kupki,
  30. {
  31. swap(tabb[1], tabb[i]);
  32. r = 1;
  33. d = r + r;
  34. while (d < i)//bedzie dzilac dopoki dziecko bedzie mneijsze od i
  35. {
  36.  
  37. if (tabb[r] <= tabb[d + 1])//sprawdzamy czy prawa sciezka jest wieksza
  38. zam = d + 1;//jak tak to d wieksze o 1 i lecimy prawa sciezka
  39. else
  40. zam = d;//jak nie to zostawiamy i lecimy lewa
  41. swap(tabb[r], tabb[zam]);//zamiana atm gdzie poszlismy
  42. r = zam;//zwiekszamy rodzica
  43. d = 2 * r;//i dziecko
  44. }
  45. }
  46.  
  47. bt = clock();
  48.  
  49. cout << endl << " przed:" << endl;
  50. for (int i = 0; i <= n - 1; i++)
  51. cout << tab[i] << " ";
  52. cout << endl << " po:" << endl;
  53. for (int i = 1; i <= n; i++)
  54. cout << tabb[i] << " ";
  55. cout << endl << "czas:" << ((long float)(bt - at)) / CLOCKS_PER_SEC;
  56.  
  57. delete tabb;
  58. powrot();
  59. }
Advertisement
Add Comment
Please, Sign In to add comment