Из программных жемчужин известно, что array[1...n]
имеет свойство кучи, если для всех 2<=i<=n x[i/2]<=x[i]
.
Вот мой код:
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");
}
}
}
}
Здесь я использовал Math.round, потому что 4/2 и 5/2 одинаковы и = 2. Когда я компилирую этот код, в последней строке он показывает, что это не куча. Может быть, потому что индекс начинается с 1, а мы не обращаем внимания на индекс 0, да?