private int swim(int i)
	{
		Key t = heap[i]; // Save key for later restoring
		while (i > 1 && greater(heap[i / 2], heap[i]))
		{
			// exch(heap, i / 2, i);
			heap[i] = heap[i / 2]; // half exchanges
			i = i / 2;
		}
		heap[i] = t; // restore key
		return i;
	}