STL--sort源码分析
SGI STL sort源码 temlate <class RandowAccessIterator> inline void sort(RandowAccessIterator first, RandowAccessIterator last){ if(first ! = last){ _introsort_loop(first, last, value_type(first), _lg(last-first)*2); _fina,_insertion_sort(first, last); } } 其中_lg()用来控制分割恶化的情况,分割的层数小于log2(last-first)*2,使用快排,大于时,使用堆排序 template <class RandowAccessIterator, class T, class size> void _introsort_loop(RandowAccessIterator first, RandowAccessIterator last, T*,Size depth_limit){ //首先判断排序区间的元素个数,如果小于等于16,则直接使用插入排序,否则对区间分区 while((last - first) > _stl_threshold){ if(depth_limit == 0){/