Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void kopiec_przywroc(int *A, int heap_size,int i);
- void kopiec_buduj(int *A, int heap_size);
- void sort_kopcowanie(int *TAB,int heap_size);
- void sort_zliczanie(int *TAB,int length);
- void tab_wyswietl(int *A, int length);
- int maksimum(int *TAB,int length);
- int minimum(int *TAB,int length);
- int right(int i);
- int left(int i);
- main()
- {
- int i=0,a,b;
- int length, heap_size;
- int *A=NULL;
- printf("Podaj dlugosc tablicy: ");
- scanf("%d",&length);
- printf("Podaj liczbe elementow kopca: ");
- scanf("%d",&heap_size);
- A=malloc(length*sizeof(int));
- for(i=0;i<heap_size;i++)
- {
- fflush(stdin);
- printf("%d. ", i+1);
- scanf("%d", &A[i]);
- }
- //sort_kopcowanie(A,heap_size);
- tab_wyswietl(A,length);
- }
- void kopiec_przywroc(int *A, int heap_size, int n)
- {
- int l;
- int r;
- int maks, tmp;
- l=left(n);
- r=right(n);
- if(l<heap_size && A[l]>A[n])
- maks=l;
- else
- maks=n;
- if(r<heap_size && A[r]>A[maks])
- maks=r;
- if(maks!=n)
- {
- tmp=A[maks];
- A[maks]=A[n];
- A[n]=tmp;
- kopiec_przywroc(A,heap_size,maks);
- }
- }
- void kopiec_buduj(int *A, int heap_size)
- {
- int i=heap_size/2;
- for(i;i>=0;i--)
- {
- kopiec_przywroc(A,heap_size,i);
- }
- }
- void tab_wyswietl(int *A, int length)
- {
- int i;
- for(i=0;i<length;i++) printf("%d: %d\n",i,A[i]);
- }
- int right(int i)
- {
- return 2*i+2;
- }
- int left(int i)
- {
- return 2*i+1;
- }
- int parent(int i)
- {
- return (i-1)/2;
- }
- //Sortowania
- void sort_kopcowanie(int *TAB,int heap_size)
- {
- int i,temp;
- kopiec_buduj(TAB,heap_size);
- for(i=heap_size-1;i>0;i--)
- {
- temp=TAB[0];
- TAB[0]=TAB[i];
- TAB[i]=temp;
- heap_size--;
- kopiec_przywroc(TAB,heap_size,0);
- }
- }
- int maksimum(int *TAB,int length)
- {
- int maks=TAB[0],i;
- for(i=1;i<length;i++)
- {
- if(TAB[i]>maks) maks=TAB[i];
- }
- return maks;
- }
- int minimum(int *TAB,int length)
- {
- int min1=TAB[0],i;
- for(i=1;i<length;i++)
- {
- if(TAB[i]<min1) min1=TAB[i];
- }
- return min1;
- }
- void sort_zliczanie(int *TAB,int length)
- {
- int k=maksimum(A,length),i;
- for i
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement