private void swim(int i)
	{
		int t = pq[i]; // Save for later restoring

		while (i > 1 && greater(items[pq[i / 2]], items[t]))
		{
			pq[i] = pq[i / 2]; // half exchanges
			qp[pq[i / 2]] = i; // reverse index
			i /= 2;
		}

		pq[i] = t; // restore in the correct position
		qp[t] = i; // reverse index
	}