Witam! Próbuję sam napisać tworzenie kopca. Nie wiem dlaczego, dla małych danych chodzi, a dla n = 1000 się wysypuje:
void budkop(int tab[], int n, int i)
{
int temp;
int parent, l, r;
if(i>=0){
parent = i;
l = 2*i +1;
r = 2*i+2;
cout<<parent<<endl<<l<<endl<<r;
int max = i;
if(l <= n-1 && tab[max] < tab[l]) max = l;
if(r <= n-1 && tab[max] < tab[r]) max = r;
if(max != i)
{
swap(tab[max],tab[i]);
if(max <= (n/2 -1)) i = max;
else i--;
budkop(tab,n,i);
}
if(max == i){
i--;
budkop(tab,n,i);}
}
}
Nie chciałbym zmieniać całego kodu. Co tu jest źle? jako argumenty przekazuje tablice n elementowa, n, i jako i (n/2)-1