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: Экспериментальная реализация, а не готовый к производству.