public E removeMin( ) {
	if ( size == 0 )
	    throw new NoSuchElementException("PriQueHeap.removeMinElement");
	else {
	    int hole  = 1,
		child = 2;
    
	    qe[0] = qe[1]; // qu[1] is now a proper hole
	    while ( child+1 < size && 
		    ( qe[child  ].compareTo(qe[size]) < 0  || 
		      qe[child+1].compareTo(qe[size]) < 0 )
		    || child+1 == size && 
		    qe[child].compareTo(qe[size]) < 0 ) {
		if (child+1 != size && 
		    qe[child+1].compareTo(qe[child]) < 0  )
		    child++;
	  
		qe[hole] = qe[child];
		hole     = child;
		child    *= 2;
	    }

	    qe[hole] = qe[size];
	    qe[size--] = null;
	    return qe[0];
	}
    }  //  removeMin