public MinHeap<T> insert(T x) {
		heap.add(x);
		int i = heap.size() - 1;

		// ΪxѰҲλ
		// iµҶڵ㿪ʼ
		try {

			Class<?> c = x.getClass();
			Method m = c.getMethod("compareTo", c);

			while (i != 1 && (Integer) m.invoke(x, heap.get(i / 2)) < 0) {
				// ܰxiλ
				heap.set(i, heap.get(i / 2));
				i = i / 2;

			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		heap.set(i, x);

		return this;
	}