Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- int parent(int i);
- int left(int i);
- int right(int i);
- void deklaracja_tablicy(int *A,int i);
- void kopiec_przywr(int *A,int i);
- void kopiec_buduj(int A);
- int main()
- {
- int *A=NULL;
- //int A[10]={16,14,10,8,7,9,3,2,3,1};
- //printf("%i",parent(9));
- int i;
- int hs;
- int lenghtA;
- deklaracja_tablicy(&A,&i);
- lenghtA=i;
- hs=i;
- //printf("%i",&A);
- for(i=0;i<lenghtA;i++)
- {
- //printf("dasdas");
- printf("%i",*(A+i));
- }
- system("pause");
- }
- void deklaracja_tablicy(int *A,int *i)
- {
- int z;
- *i=0;
- A=NULL;
- while(1)
- {
- fflush(stdin);
- scanf_s("%i",&z);
- if(z==0)
- break;
- (*i)++;
- A=realloc(A,*i*sizeof(int));
- *(A+(*i)-1)=z;
- }
- //printf("%i",*A);
- }
- void kopiec_przywr(int *A,int i, int hs)
- {
- int l=left(i);
- int r=right(i);
- int max,temp;
- if(l<hs && A[l]>A[i])
- max=l;
- else max=i;
- if(r<hs && A[r]>A[max])
- max=r;
- if(max!=i)
- {
- A[i]=temp;
- A[i]=A[max];
- A[max]=temp;
- kopiec_przywr(A,max,hs);
- }
- }
- void kopiec_buduj(int A,int n)
- {
- int i;
- for(i=n/2;i>0;i--)
- kopiec_przywr(A,i,n);
- }
- int parent(int i)
- {
- return i/2;
- }
- int left(int i)
- {
- return 2*i;
- }
- int right(int i)
- {
- return 2*i+1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement