void heapify( int i, int heapsize )
	{
			int l, r, largest;

			l = left( i );
			r = right( i );
			c.IncCompare();
			if( l <= heapsize && points.greater(l, i) ){
					largest = l;
			} else 
					largest = i;
			c.IncCompare();
			if( r <= heapsize && points.greater(r, largest) ) {
					largest = r;
			}
			if( largest != i ){
				points.swap(i, largest);
				heapify( largest, heapsize );
			}
	}