2024年5月11日发(作者:)
template
inline void sort(RandomAccessIterator first,
RandomAccessIterator last)
{
if (!(first == last))
{
__quick_sort_loop(first, last);
__final_insertion_sort(first, last);
}
}
template
inline void __quick_soort_loop(RandomAccessIterator first,
RandomAccessIterator last)
{
__quick_soort_loop_aux(first, last, _RWSTD_VALUE_TYPE(first));
}
template
void __quick_sort_loop_aux(RandomAccessIterator first,
RandomAccessIterator last,
T*)
{
while (last - first > __stl_threshold)
{
//median-of-3 partitioning
RandomAccessIterator cut = __unguarded_partition(first, last, T(__median(*first, *(first + (last - first) / 2), *(last - 1)));
if (cut - first >= last - cut)
{
__quick_soort_loop(cut, last);//对右段递归处理
last = cut;
}
else
{
__quick_sort_loop(first,cut);
first = cut;
}
}
}
发布评论