0001 //对向量中的第i个词条实施上滤操作,i < _size 0002 template <typename T> Rank percolateUp ( T* A, Rank i ) { 0003 while ( ParentValid ( i ) ) { //只要i有父亲(尚未抵达堆顶),则 0004 Rank j = Parent ( i ); //将i之父记作j 0005 if ( lt ( A[i], A[j] ) ) break; //一旦当前父子不再逆序,上滤旋即完成 0006 swap ( A[i], A[j] ); i = j; //否则,父子交换位置,并继续考查上一层 0007 } //while 0008 return i; //返回上滤最终抵达的位置 0009 }