1
이것은 힙을 수행하는 세 가지 기능으로 작동하는 프로그램입니다. 어디서 문제인지 파악할 수 없습니다. 누군가 도움이된다면 기꺼이 보내주십시오.디버깅 힙
이 두 가지 기능이있어
int left(int i)
{return(2*i+1);}
int right(int i)
{return(2*i+2);}
맥스 최대 배열 인덱스 인덱스 좌우 구한다. A는 내가 인덱스
void maxheapify(int i,int *a,int max)
{
if(i>(max-1)/2)
return;
else
{
int big=0,temp=0;
if(a[i]<a[left(i)])
big=left(i);
if(right(i)<=max && a[i]<a[right(i)])
big=right(i);
if(big==i)
return;
else
{
temp=a[big];
a[big]=a[i];
a[i]=temp;
maxheapify(big,a,max);
}
}
}
void buildmaxheap(int *a,int max)
{
int i;
for(i=0;i<=(max-1)/2;i++)
maxheapify(i,a,max);
}
void heapsort(int *a,int max)
{
int j=0,temp=0;
for(j=max;j>0;j--)
{
buildmaxheap(a,j);
temp=a[0];
a[0]=a[j];
a[j]=temp;
}
}
문제가 무엇인지 구체적으로 설명해 주시면 도움을주고 자하는 사람들의 추측이 훨씬 줄어 듭니다. – TopGunCoder