Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Алгоритм sort



Назначение алгоритма очевидно из его названия. Алгоритм можно применять только для тех контейнеров, которые обеспечивают произвольный доступ к элементам,

— этому требованию удовлетворяют массив, вектор и двусторонняя очередь, но не удовлетворяет список.

В связи с этим класс 1ist содержит метод sort(), решающий задачу сортировки.

Алгоритм sort имеет две сигнатуры:

tempiate<class RandomAccessIt> void sort(RandomAccessIt fist, RandomAccessIt last);

tempiate<class RandomAccessIt> void sort(RandomAccessIt fist, RandomAccessIt last, Compare comp);

Первая форма алгоритма обеспечивает сортировку элементов из диапазона [first,last), причем для упорядочения по умолчанию используется операция <, которая должна быть определена для типа Т.

Т — тип данных, содержащихся в контейнере.

Таким образом, сортировка по умолчанию — это сортировка по возрастанию значений. Например:

int main() {

double arr[6] = {2.2, 0.0, 4.4, 1.1, 3.3, 1.1};

vector<double> v1(arr, arr + 6);

Sort (v1.begin(), v1.end());

Print(v1);

Return 0;

}

Результат выполнения программы:

0 1.1 1.1 2.2 3.3 4.4

Вторая форма алгоритма sort позволяет задать произвольный критерий упорядочения.

Для этого нужно передать через третий аргумент соответствующий предикат, то есть функцию или функциональный объект, возвращающие значение типа bool. Использование функции в качестве предиката было показано выше.

Использованию функциональных объектов посвящен следующий раздел.





Дата публикования: 2014-11-28; Прочитано: 250 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...