Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <time.h>
- int parent(int i)
- {
- return i/2;
- }
- int left(int i)
- {
- return 2*i;
- }
- int right(int i)
- {
- return 2*i+1;
- }
- void heapify(int t[], int i, int size)
- {
- int largest, l, r;
- int tmp;
- l=left(i);
- r=right(i);
- largest=i;
- if(l<=size)
- if(t[l]>t[i])largest=l;
- if(r<=size)
- if(t[r]>t[largest])largest=r;
- if (largest!=i)
- {
- tmp=t[i];
- t[i]=t[largest];
- t[largest]=tmp;
- heapify(t, largest, size);
- }
- }
- void build_heap(int t[], int size)
- {
- int i;
- for(i=size/2; i>0; i--)
- heapify(t, i, size);
- }
- void heap_sort(int t[], int size)
- {
- //Podstawowa funkcja wywołana w MAIN
- int i, tmp;
- build_heap(t, size);
- for(i=size; i>1; i--)
- {
- tmp=t[1];
- t[1]=t[i];
- t[i]=tmp;
- --size;
- heapify(t, 1, size);
- }
- }
- #define TAB_MAX 5
- #define RANDOM_MAX 10
- void print(int T[])
- {
- int i;
- printf("\n[");
- for(i=0; i<TAB_MAX; i++)
- printf("%d ", T[i]);
- printf("]\n\n");
- }
- void tab_random(int T[])
- {
- int i;
- for(i = 0; i<TAB_MAX; i++)
- T[i] = rand() % RANDOM_MAX;
- }
- int main()
- {
- srand(time(NULL));
- int tab[TAB_MAX];
- tab_random(tab);
- print(tab);
- heap_sort(tab, TAB_MAX-1);
- print(tab);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement