Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. void afisare(int v[], int n)
  5. {
  6. int i;
  7. for (i = 0; i < n; i++)
  8. cout << v[i] << " ";
  9. cout << endl;
  10. }
  11.  
  12. void ConstructionBottomUp(int v[],int n)
  13. {
  14. int i, j, k, value;
  15. bool heap;
  16. for (i = n / 2 - 1 ; i >= 0; i--)
  17. {
  18. k = i;
  19. value = v[k];
  20. heap = false;
  21. while (!heap && 2 * k + 1 <= n)
  22. {
  23. j = 2 * k + 1;
  24. if (j < n)
  25. if (v[j] < v[j + 1])
  26. j++;
  27. if (value >= v[j])
  28. heap = true;
  29. else
  30. {
  31. v[k] = v[j];
  32. k = j;
  33. }
  34. }
  35. v[k] = value;
  36. }
  37. }
  38.  
  39. void heapify(int v[], int n, int i)
  40. {
  41. int left, right,aux,max;
  42. left = 2 * i + 1;
  43. right = 2 * i + 2;
  44. if (left < n && v[left] > v[i])
  45. max = left;
  46. else
  47. max = i;
  48. if (right < n && v[right] > v[max])
  49. max = right;
  50. if (max != i)
  51. {
  52. aux = v[i];
  53. v[i] = v[max];
  54. v[max] = aux;
  55. heapify(v, n, max);
  56. }
  57.  
  58. }
  59.  
  60. void maxHeap(int v[], int n)
  61. {
  62. int i;
  63. for (i = n / 2 - 1; i >= 0; i--)
  64. heapify(v, n, i);
  65. }
  66.  
  67. void heapSort(int v[], int n)
  68. {
  69. maxHeap(v, n);
  70. int i,aux;
  71. for (i = n - 1; i >= 0; i--)
  72. {
  73. aux = v[0];
  74. v[0] = v[n - 1];
  75. v[n - 1] = aux;
  76. n--;
  77. afisare(v, n);
  78. heapify(v, i, 0);
  79. }
  80. }
  81.  
  82. void ConstructionTopDown(int v[], int n,int w[],int &m)
  83. {
  84. int i, aux,j;
  85. bool heap;
  86. w[m] = v[0];
  87. m++;
  88. for (i = 1; i < n; i++)
  89. {
  90. w[m] = v[i];
  91. m++;
  92. heap = false;
  93. j = i;
  94. while (!heap && j > 0)
  95. {
  96. if (w[j] > w[(j - 1) / 2])
  97. {
  98. aux = w[j];
  99. w[j] = w[(j - 1) / 2];
  100. w[(j - 1) / 2] = aux;
  101. }
  102. else
  103. {
  104. heap = true;
  105. }
  106. j = (j / 2) - 1;
  107. }
  108. }
  109. }
  110.  
  111. int main()
  112. {
  113. /*int v[] = { 25,57,48,37,12,92,86,33 };
  114. int n = 8;
  115. afisare(v, n);
  116. ConstructionBottomUp(v, n);
  117. afisare(v, n);
  118. int v[] = { 2,8,5,3,9,1 };
  119. int n = 6;
  120. afisare(v, n);
  121. heapSort(v, n);
  122. afisare(v, n);*/
  123. int v[] = { 4,7,12,3,18,9 };
  124. int n = sizeof(v) / sizeof(v[0]);
  125. int m = 0;
  126. int w[100];
  127. ConstructionTopDown(v, n, w, m);
  128. afisare(w, m);
  129. system("pause");
  130. return 0;
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement