Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- void Heapify(int a, int i, int A[])
- {
- int l = 2*i;
- int r = 2*i + 1;
- int largest,temp;
- if ((l <= a)&& (A[l] > A[i]))
- {
- largest = l;
- }
- else
- {
- largest = i;
- }
- if ((r<=a)&&(A[r]>A[largest]))
- {
- largest = r;
- }
- if (largest != i)
- {
- temp = A[i];
- A[i] = A[largest];
- A[largest] = temp;
- Heapify(a,largest,A);
- }
- }
- void BuildHeap(int a, int A[])
- {
- int i;
- for(i = floor(a/2);i>=0;i--)
- {
- Heapify(a,i,A);
- }
- }
- void HeapSort(int a, int A[])
- {
- BuildHeap(a,A);
- int temp;
- int i;
- for(i=a;i>=1;i--)
- {
- temp = A[a];
- A[a] = A[0];
- A[0] = temp;
- a--;
- Heapify(a,0,A);
- }
- }
- int main()
- {
- int liczby=0;
- FILE *fp;
- int c; //liczba
- fp= fopen("kopiec.txt","r");
- if(fp==NULL)
- {
- printf("Taki plik nie istnieje lub jest pusty.");
- }else
- {
- while( c != 0)
- {
- fscanf(fp,"%d",&c);
- liczby++;
- }
- liczby = liczby - 2;
- rewind(fp);
- int tab[liczby];
- int x;
- for(x=0;x<=liczby;x++)
- {
- fscanf(fp,"%d",&tab[x]);
- }
- HeapSort(liczby, tab);
- FILE *fpsort;
- fpsort= fopen("pokopcowane.txt","w+");
- for(x=0;x<=liczby;x++)
- {
- fprintf(fpsort,"%d\n",tab[x]);
- }
- printf("Wpisano do pliku");
- }
- fclose(fp);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement