Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<conio.h>
- int Left(int i);
- int Right(int i);
- int Parent(int i);
- void kopiec_wypelnij(int *tab, int roz);
- void kopiec_buduj(int *tab,int root);
- void kopiec_przywr(int *tab,int i , int n);
- main()
- {
- int rozmiar;
- int *A;
- char z;
- fflush(stdin);
- printf("Podaj Rozmiar ");
- scanf("%d",&rozmiar);
- A=malloc(sizeof(int)*rozmiar);
- while(1)
- {
- printf("\nwybierz opcje");
- printf("\nW-wypelnij");
- printf("\nP-Przywroc");
- printf("\nB-buduj\n");
- fflush(stdin);
- z = _getch();
- switch(z)
- {
- case 'w':
- kopiec_wypelnij(A,rozmiar);
- break;
- case 'p':
- break;
- case 'b':
- kopiec_buduj(A,rozmiar);
- break;
- }
- }
- }
- int Left(int i)
- {
- return 2*i+1;
- }
- int Right(int i)
- {
- return 2*(i+1);
- }
- int Parent(int i)
- {
- return (i-1)/2;
- }
- void kopiec_wypelnij(int *tab, int roz)
- {
- int i;
- for(i=0 ;i<roz ;i++)
- {
- printf("podaj wartosc liczbowa dla elelemntu:%d : ",i);
- fflush(stdin);
- scanf("%d",*(tab+i));
- }
- }
- void kopiec_przywr(int *tab,int i , int n)
- {
- int l=Left(i);
- int r=Right(i);
- int Najwiekszy,temp;
- if(l<n&&tab[l]>tab[i])
- {
- Najwiekszy=l;
- }
- else
- {
- Najwiekszy=i;
- }
- if(r<n&&tab[r]>tab[Najwiekszy])
- {
- Najwiekszy=r;
- }
- if(Najwiekszy!=1)
- {
- temp=tab[i];
- tab[i]=tab[Najwiekszy];
- tab[Najwiekszy]=temp;
- kopiec_przywr(tab,Najwiekszy,n);
- }
- }
- void kopiec_buduj(int *tab,int n)
- {
- int i;
- for(i=n/2;i>=0;i--)
- {
- kopiec_przywr(tab,i,n);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement