Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. /*
  2. Masive de date - Vectori
  3. Aplicatii ale vectorilor :
  4.  
  5. 1) Algorimul de sortare SELECT SORT
  6. 2) Algorimul de sortare BUBBLE SORT
  7. 3) Algorimul de sortare INSERT SORT
  8. -------------------------------------------
  9. 4) Algorimul de sortare HEAP SORT
  10.  
  11. ( sortare cu gramezi )
  12.  
  13. Def(1)
  14. Prin heap(gramada) intelegem o structura de date interiorul careia
  15. sunt verificate proprietatile
  16.  
  17. (a) Element pe pozitia i daca are relationari ( descendente ) acestea sunt
  18. pe pozitiile 2*i si 2*i+1
  19. (b) Element pe pozitia i daca are relationari ( descendente ) detine o
  20. informatie >= decat a descendentilor sai
  21.  
  22.  
  23. Un heap poate fi imaginat ca un arbore binar in interiorul caruia
  24. fiecare nod are un nume si o informatie
  25. Descendentele daca exista sunt ramuri in acest arbore
  26.  
  27. exemplu :
  28.  
  29. *1 [ 300 ] nod i=1 radacina are doi fii
  30. / \
  31. *2 [32] *3 [45]
  32. / \
  33. *4 [ 22 ] *5 [7]
  34.  
  35. OBS :
  36. Intr-un heap informatia de valoare maxima se afla in radacina
  37.  
  38. Idee heasort :
  39. {1}
  40. *1 [ 300 ]
  41. ----------------------
  42. / \
  43. *2 [32] *3 [45]
  44. / \
  45. *4 [ 22 ] *5 [7]
  46.  
  47. {2}
  48.  
  49. reorganizarea :
  50. ----------------------
  51. / \
  52. *2 [32] *3 [45]
  53. / \
  54. *4 [ 22 ] *5 [7]
  55.  
  56. ca heap !
  57.  
  58. =================================
  59. Construierea unui heap !!!!!
  60.  
  61. heapul va fi reprezentat sub forma de vector
  62.  
  63. ---------------------------------
  64. V : | 300 | 32 | 45 | 22 | 7 |
  65. ---------------------------------
  66. 1 2 3 4 5
  67.  
  68. in care index inseamna nume de nod si continut inseamna
  69. informatie atasata !!!!
  70.  
  71. Cum ???
  72.  
  73. pas 1 : consider heapul singleton ( format dintr-un singur element )
  74.  
  75. pas 2 : in heap adaug nodul i
  76. daca stiu cum se numeste nodul deduc numele tatalui
  77. verific buna relatie tata fiu
  78.  
  79. exemplu :
  80. 32 , 7 ,300 , 45 , 22
  81.  
  82. pas (1)
  83. *1[32]
  84.  
  85. pas 2
  86. *1[32]
  87. /
  88. *2[7]
  89.  
  90.  
  91. pas 3
  92.  
  93. *1[32]
  94. / \ verific buna relatie tata fiu : NU !!!!
  95. *2[7] 3[300] interschimb V[tata] cu V[fiu]
  96.  
  97.  
  98. *1[300] operatie urmata de un sir de verificari
  99. / \ pe verticala ( cu scopul de a decide
  100. daca nu am stricat heapul anterior
  101. *2[7] 3[32]
  102. sirul verificarilor pe verticala
  103. se opreste fie cand ies din gramada
  104. fie cand gaseses advertenta
  105.  
  106. pas 4
  107.  
  108. *1[300]
  109. / \
  110.  
  111. *2[7] 3[32]
  112. /
  113. *4 [45]
  114.  
  115.  
  116. *1[300]
  117. / \
  118.  
  119. *2[45] 3[32]
  120. /
  121. *4 [7]
  122.  
  123.  
  124. pas 5
  125.  
  126. *1[300]
  127. / \
  128.  
  129. *2[45] 3[32]
  130. / \
  131. *4 [7] *5[22]
  132.  
  133.  
  134. Avem heap
  135. V : 300,45,32,7,22
  136.  
  137. OBS
  138. Organizarea unui set ca heap NU ESTE UNICA !!!
  139.  
  140. */
  141. #include<iostream>
  142. using namespace std;
  143. int n,V[100];
  144. int main()
  145. {int fiu;
  146. int tata;
  147. cout<<"n=";cin>>n;
  148. for(int i=1;i<=n;i=i+1) { cout<<endl<<"V["<<i<<"]=";cin>>V[i];}
  149. // for( int k .....
  150. // {
  151. for(int i=k;i<=n-1;i=i+1) // sirul de insertiilor de efectuat
  152. { fiu=i+1; tata=fiu/2;
  153. while ( ( V[tata] < V[fiu] ) && (tata>=1) ){
  154. swap(V[tata],V[fiu]);
  155. fiu=tata;
  156. tata=fiu/2;
  157. } }
  158. // }
  159. cout<<endl; for(int i=1;i<=n;i=i+1) { cout<<V[i]<<" "; } }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement