Реализации алгоритмов/Сортировка/Быстрая: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 218:
=== Быстрая сортировка на основе библиотеки [[Си++/Стандартная библиотека|STL]] ===
 
''<source lang="c++">#include <functional>''
''#include <algorithm>''
''#include <iterator>''
'''template'''< typename BidirectionalIterator, typename Compare >
'''void''' quick_sort( BidirectionalIterator first, BidirectionalIterator last, Compare cmp ) {
'''if'''( first != last ) {
BidirectionalIterator left = first;
BidirectionalIterator right = last;
BidirectionalIterator pivot = left++;
'''while'''( left != right ) {
'''if'''( cmp( *left, *pivot ) ) {
++left;
} '''else''' {
'''while'''( (left != --right) && cmp( *pivot, *right ) );
std::iter_swap( left, right );
}
Строка 242:
}
'''template'''< typename BidirectionalIterator >
'''inline''' '''void''' quick_sort( BidirectionalIterator first, BidirectionalIterator last ) {
quick_sort( first, last,
std::less_equal< typename std::iterator_traits< BidirectionalIterator >::value_type >()
);</source>
 
=== Для вещественных чисел ===