Implementacja kopca

0

Witam:P Mógłby mnie ktoś troszku naprowadzić co zrobiłem nie tak w tym kopcu??Nie działa jak należy.Chciałbym do tego dojść po części sam a nie zerżnąć z internetu.Jakaś mała wskazówka by mi się przydała.A o to kod

#include<stdio.h>
#define N 10

void build_heap(int T[],int rozmiar_tablicy);
void heapify(int T[],int heapsize,int i);

main()
{
int tablica[N],i,rozmiar;

for(i=1;i<=N;i++)
scanf("%d",&tablica[i]);


for(i=1;i<=N;i++)
printf("%d ",tablica[i]);

rozmiar=N;
build_heap(tablica,rozmiar);
puts("\n");
for(i=1;i<=N;i++)
printf("%d ",tablica[i]);

system("pause");

}
void build_heap(int A[],int rozmiar_tablicy)
{
int i,heapsize;
heapsize=rozmiar_tablicy;
for(i=heapsize/2;i>=0;i--)
heapify(A,heapsize,i);

}

void heapify(int A[],int heapsize,int i)
{
int l,r,largest,temp;
l=2*i;
r=2*i+1;
if(l<=heapsize && A[l]>A[i])
largest=l;
else largest=i;

if(r<=heapsize && A[r]>A[largest])
largest=r;
if(largest!=i)
{
A[i]=temp;
A[i]=A[largest];
A[largest]=temp;
heapify(A,heapsize,largest);
}

}
0

Tu sie machnoles. Do temp przypisz A[i], a nie na odwrot.

A[i]=temp; 
A[i]=A[largest];
A[largest]=temp;

Patrzylem tylko na build-heap i heapify, ale oprocz tej zamiany masz ksiazkowo zrobione.

0

oki działa ..dzięki wielkie

1 użytkowników online, w tym zalogowanych: 0, gości: 1