Guest User

Untitled

a guest
Jan 9th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. #include "Kopiec_i_kolejka.h"
  2. #include<stdlib.h>
  3. #include <stdio.h>
  4. void struct_heap(heap *T)
  5. {
  6. T->lenght=0;
  7. T->heap_size=0;
  8. }
  9.  
  10. void init(heap *T,int *tab,int n)
  11. {
  12. int i;
  13. for(i=0;i<n;i++)
  14. {
  15. T->data[i]=tab[i];
  16. }
  17. T->lenght=n;
  18. }
  19. int PARENT(int i)
  20. {
  21. return i/2;
  22. }
  23. int LEFT(int i)
  24. {
  25. return 2*i;
  26. }
  27. int RIGHT(int i)
  28. {
  29. return 2*i+1;
  30. }
  31. void Max_heapify(heap *T, int i)
  32. {
  33. int tmp;
  34. int L;
  35. int l=LEFT(i);
  36. int r=RIGHT(i);
  37. if(l<=T->heap_size && T->data[l]>T->data[i])
  38. L=l;
  39. else
  40. L=i;
  41. if(r<=T->heap_size && T->data[r]>T->data[L])
  42. L=r;
  43. if(L!=i)
  44. {
  45. tmp=T->data[i];
  46. T->data[i] = T->data[L];
  47. T->data[L] = tmp;
  48. Max_heapify(T, L);
  49. }
  50.  
  51. }
  52.  
  53. void build_max_heap (heap *T)
  54. {
  55. int i;
  56. T->heap_size=T->lenght;
  57. for (i = T->lenght/2;i>=0;i--)
  58. {
  59. Max_heapify(T, i);
  60. }
  61. }
  62.  
  63. void write(heap *T)
  64. {
  65. int j;
  66. for(j=0;j<T->lenght;j++)
  67. printf("%d ",T->data[j]);
  68. }
Advertisement
Add Comment
Please, Sign In to add comment