今天读了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)个数值 真是好久没接触算法了:)