void buildHeap(struct Cell* space)
{
  int i;
  for(i = ( MAXSIZE / 2) ; i >= 0; i--)
    heapify(space, i, MAXSIZE);

}

void heapify(struct Cell* space, int i, int size)
{
  int l, r, largest;
  l = left(i);
  r = right(i);
  largest = i;

  if(l < size && space[l].data > space[i].data)
    largest = l;

  if(r < size && space[r].data > space[largest].data)
    largest = r;
  
  if(largest != i)
    {
	  swap(&space[i], &space[largest]);

      heapify(space, largest, size);
    }
    
  return;
}

int parent(int index)
{
  return (index - 1) / 2;
}

int left(int index)
{
  return 2 * index + 1;
}

int right(int index)
{
  return 2 * index + 2;
}