0001 template <typename T> Rank Vector<T>::partition(Rank lo, Rank hi) { //LGU版: lo < hi 0002 swap(_elem[hi-1], _elem[dice(lo, hi)]); //从[lo,hi)内任选一个元素与末元素交换 0003 const T pivot = _elem[hi-1]; //经以上交换,等效于随机确定候选轴点 0004 for (Rank k = lo; k < hi-1; k++) //自左向右扫描 0005 if (_elem[k] < pivot) //若当前元素_elem[k]小于pivot,则 0006 swap(_elem[lo++], _elem[k]); //将_elem[k]交换至原mi之后,使L子序列向右扩展 0007 swap(_elem[lo], _elem[hi-1]); return lo; //候选轴点归位 0008 } //partition - LGU