Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std ;
  4.  
  5. struct heap {
  6. int size ;
  7. int vector [1000] ;
  8. };
  9.  
  10. void citire_heap (heap &a)
  11. {
  12. cin >> a.size ;
  13. for(int i = 1 ; i <= a.size ; i++)
  14. cin >> a.vector[i];
  15. }
  16.  
  17. void max_heapify (heap &a , int i)
  18. {
  19. if(i >= (a.size)/2 + 1)
  20. return ;
  21. if(a.vector[2 * i] >= a.vector [2 * i + 1] && a.vector[2 * i] > a.vector[i])
  22. {
  23. int aux = a.vector[2 * i] ;
  24. a.vector[2 * i] = a.vector[i];
  25. a.vector[i] = aux ;
  26. max_heapify(a , 2 * i) ;
  27. }
  28.  
  29. if(a.vector[2 * i + 1] >= a.vector [2 * i] && a.vector[2 * i + 1] > a.vector[i])
  30. {
  31. int aux = a.vector[2 * i + 1] ;
  32. a.vector[2 * i + 1] = a.vector[i];
  33. a.vector[i] = aux ;
  34. max_heapify(a , 2 * i + 1) ;
  35. }
  36.  
  37. return ;
  38. }
  39.  
  40. void make_max_heap (heap &a)
  41. {
  42. for(int i = a.size /2 ; i >= 1 ; i --)
  43. max_heapify(a , i);
  44. return ;
  45. }
  46.  
  47. int get_max(heap a)
  48. {
  49. return a.vector[1] ;
  50. }
  51.  
  52. int extract_max (heap & a)
  53. {
  54. int rezultat = a.vector[1] ;
  55. a.vector[1] = a.vector[a.size --];
  56. max_heapify(a , 1);
  57. return rezultat ;
  58. }
  59.  
  60. void insert_max_heap(heap &a , int x)
  61. {
  62. a.size ++;
  63. a.vector[a.size] = x ;
  64. int i = a.size ;
  65. while (i > 1 && a.vector[i] > a.vector[i/2])
  66. {
  67. int aux = a.vector[i/2] ;
  68. a.vector[i/2] = a.vector[i] ;
  69. a.vector[i] = aux;
  70. i = i/2 ;
  71. }
  72. }
  73.  
  74. void afisare_heap (heap &a)
  75. {
  76. for(int i = 1 ; i <= a.size ; i ++)
  77. cout << a.vector[i] << " " ;
  78. cout << '\n' ;
  79. }
  80.  
  81. int main()
  82. {
  83. heap a ;
  84. citire_heap(a);
  85. make_max_heap (a);
  86. afisare_heap (a);
  87. int m = extract_max(a);
  88. cout << m << " ";
  89. afisare_heap(a);
  90. insert_max_heap(a , 100);
  91. afisare_heap(a);
  92. return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement