Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Kopiec_i_kolejka.h"
- #include<stdlib.h>
- #include <stdio.h>
- void struct_heap(heap *T)
- {
- T->lenght=0;
- T->heap_size=0;
- }
- void init(heap *T,int *tab,int n)
- {
- int i;
- for(i=0;i<n;i++)
- {
- T->data[i]=tab[i];
- }
- T->lenght=n;
- }
- int PARENT(int i)
- {
- return i/2;
- }
- int LEFT(int i)
- {
- return 2*i;
- }
- int RIGHT(int i)
- {
- return 2*i+1;
- }
- void Max_heapify(heap *T, int i)
- {
- int tmp;
- int L;
- int l=LEFT(i);
- int r=RIGHT(i);
- if(l<=T->heap_size && T->data[l]>T->data[i])
- L=l;
- else
- L=i;
- if(r<=T->heap_size && T->data[r]>T->data[L])
- L=r;
- if(L!=i)
- {
- tmp=T->data[i];
- T->data[i] = T->data[L];
- T->data[L] = tmp;
- Max_heapify(T, L);
- }
- }
- void build_max_heap (heap *T)
- {
- int i;
- T->heap_size=T->lenght;
- for (i = T->lenght/2;i>=0;i--)
- {
- Max_heapify(T, i);
- }
- }
- void write(heap *T)
- {
- int j;
- for(j=0;j<T->lenght;j++)
- printf("%d ",T->data[j]);
- }
Advertisement
Add Comment
Please, Sign In to add comment