From programming pearls, it is known that array[1...n]
has heap property if for all 2<=i<=n x[i/2]<=x[i]
.
Here is my code:
import java.math.*;
public class Heap
{
public static void main(String[]args)
{
int x[]=new int[]{12,20,15,29,23,17,22,35,40,26,51,19};
for (int i=2;i<x.length;i++)
{
if (x[Math.round(i/2)]<=x[i])
{
System.out.println("heap");
}
else
{
System.out.println("not heap");
}
}
}
}
Here I used Math.round because 4/2 and 5/2 is same and =2. When I compile this code it shows me at last line that it is not heap. Maybe because the index starts from 1 and we don't pay attention to index 0, yes?