今天读了lucent中的PriorityQueue.java, 一个很巧妙的复杂度为log(n)的排序堆栈.

始终确保数组A[1...n]中:
A[i]<A[2*i]  & A[i] < A[2*i +1]
很容易推论出A[1]一定是最小数值, 并且每次put()和pop()至多移动log(n)个数值

真是好久没接触算法了:)