Function template adaptive_sort
boost::movelib::adaptive_sort
Synopsis
template<typename RandIt, typename Compare>
void adaptive_sort(RandIt first, RandIt last, Compare comp,
typename iterator_traits< RandIt >::value_type * uninitialized = 0,
std::size_t uninitialized_len = 0);
Description
Effects: Сортирует элементы в диапазоне [первый, последний] в порядке восхождения согласно сопоставлению фанктора "comp". Тип является стабильным (порядок равных элементов гарантированно сохраняется). Эффективность улучшается, если обеспечивается дополнительное сырьевое хранение.
Запросы:
Параметры:
первый, последний: диапазон элементов для сортировки
comp: объект функции сравнения, который возвращается к истине, если первый аргумент заказывается перед вторым.
uninitialized, uninitialized_len: сырое хранилище, начинающееся на "uninitialized", способное удерживать "uninitialized_len" элементы типа iterator_traits::value_type. Максимальная производительность достигается, когда uninitialized_len является ceil(std::расстояние(первый, последний)/2).
Throws: Если ком-бросок или конструктор движения, переместите назначение или своп типа отключения RandIt бросает.
Сложность: Всегда K x O(Nxlog(N))) сравнивает и перемещает задания/конструкторы/свапы. Сравнения близки к минимуму даже без дополнительной памяти. Постоянный фактор для перемещения данных минимизируется, когда uninitialized_len является ceil(std::расстояние(первый, последний)/2). Довольно хорошая производительность достигается при ceil(sqrt(std::расстояние(первый, последний))*2.
Caution: Экспериментальная реализация, а не готовый к производству.