-2
私はちょうど最大ヒープの最初の反復のように見えるテストコードを書いた。しかし、実行時にエラーが発生します。 2番目の条件が狂っている場合。それは実行されることは想定されていませんが、何とかそれはしません。コードが狂っている
期待O/P:8 5 3 7 2
現在のO/P:3 8 5 7 2
#include <stdio.h>
int a[]={5,8,3,7,2};
void printArray()
{
printf("\nStatus of the array\n");
for(int i=0;i<5;i++)
printf("[%d]",a[i]);
printf("\n");
}
void swap(int x,int y)
{
// printf("%d %d",a[x],a[y]);
a[x]=a[x]+a[y];
a[y]=a[x]-a[y];
a[x]=a[x]-a[y];
}
void maxHeap(int i)
{
int largest=i,right=0,left=0;
left=(2*i)+1;
right=(2*i)+2;
if(a[left] > a[i])
largest=left;
printf("L=%d R=%d",left,right);
if(a[right] > a[i]);
{
printf("\na[right]=%d a[i]=%d",a[right],a[i]);
largest=right;
}
if(largest != i)
swap(largest,i);
}
void main()
{
printArray();
maxHeap(0);
printArray();
}