Сортировка - одна из самых простых и полезных функций, применяемых к данным. Он направлен на упорядочивание данных определенным образом, которые могут увеличиваться или уменьшаться в соответствии с требованиями. В C ++ STL есть встроенная функция под названием «sort ()», которая позволяет нам легко выполнять алгоритм сортировки. В этой статье мы исследуем функцию сортировки в C ++,
В этой статье будут рассмотрены следующие указатели:
как преобразовать двоичную строку в десятичную в java
- Функция сортировки ()
- Пример - сортировка данных в порядке возрастания
- Пример - сортировка данных в порядке убывания
- Partial_sort
Продолжаем читать статью о функции сортировки в C ++
Сортировать ( ) функция
Это встроенная функция файла заголовка алгоритма, она используется для сортировки контейнеров, таких как массив, векторов в указанном порядке. Внутри эта функция реализована как Быстрая сортировка.
Quicksort - это алгоритм «разделяй и властвуй». Быстрая сортировка сначала делит большой список элементов на два меньших подсписка: нижние элементы и верхние элементы. Затем Quicksort рекурсивно сортирует подсписки.
Шаги следующие:
1. Выберите из списка случайный элемент (обычно последний элемент), называемый точкой поворота.
2. Измените порядок списка таким образом, чтобы все элементы со значениями меньше, чем точка поворота, располагались перед точкой поворота, в то время как все элементы со значениями больше, чем точка поворота, следовали за ней, а равные значения могли идти в любом случае, этот процесс называется операцией разделения.
3. Рекурсивно отсортируйте подсписок меньших элементов и подсписок больших элементов, снова выберите опорный элемент в подсписке и разделите их.
Базовый случай рекурсии - это списки нулевого или единичного размера, которые никогда не нужно сортировать, поэтому, комбинируя их, мы сортируем наш список.
Быстрая сортировка на практике работает быстрее, чем другие алгоритмы O (n log n), такие как сортировка вставкой или пузырьковая сортировка. Быстрая сортировка может быть реализована с помощью алгоритма разделения на месте, что означает, что вся сортировка может быть выполнена с использованием только O (log n) дополнительного пространства. Быстрая сортировка не является стабильной.
Его сложность такова:
Лучший случай - O (n log n)
Худший случай - O (n ^ 2)
Средний случай - O (n log n)
Синтаксис:
сортировка (первая, последняя)
Вот,
first - это индекс (указатель) первого элемента в сортируемом диапазоне.
last - это индекс (указатель) последнего элемента в сортируемом диапазоне.
Например, мы хотим отсортировать элементы массива «arr» от 1 до 10 позиций, мы будем использовать sort (arr, arr + 10), и он будет отсортировать 10 элементов в порядке возрастания.
Возвращаемое значение
Никто
Сложность
Среднее значение сложности сортировки составляет N * log2 (N), где N = last - first.
Диапазон данных
Объект в диапазоне [первый, последний) изменен.
Исключения
Перегрузки с параметром шаблона, который называется ExecutionPolicy, сообщают об ошибках следующим образом:
Если алгоритму не удается выделить память, в качестве исключения выдается std :: bad_alloc.
Если выполнение функции вызывается как часть алгоритма, генерируется исключение std :: terminate.
Продолжаем читать статью о функции сортировки в C ++
Пример - чтобы отсортировать данные в порядке возрастания:
#include с использованием пространства имен std int main () {int array [] = {10, 35, 85, 93, 62, 77, 345, 43, 2, 10} int n = sizeof (array) / sizeof (array [0] ) // 'sizeof' дает размер всего массива, т.е. размер каждого символа * no. символов // так попасть нет. символов // делим sizeof (array) на размер любого символа массива // здесь array [0] sort (array, array + n) cout<< 'nArray after sorting using ' 'default sort is : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 }
Вывод :
Объяснение
Из приведенного выше примера мы видим, что функция sort () по умолчанию сортирует массив в порядке возрастания.
Продолжаем читать статью о функции сортировки в C ++
Пример - чтобы отсортировать данные в порядке убывания:
Чтобы отсортировать данные массива в порядке убывания, нам нужно ввести третий параметр, который используется для указания порядка, в котором элементы должны быть отсортированы. Мы можем использовать функцию «больше ()» для сортировки данных в порядке убывания.
есть Java
#include с использованием пространства имен std int main () {int array [] = {41, 53, 4, 459, 60, 7, 23, 4, 232, 10} int n = sizeof (array) / sizeof (array [0] ) sort (массив, массив + n, больше ()) cout<< 'Array after sorting : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 }
Вывод:
Опыт л нация
Здесь функция sort () выполняет сравнение таким образом, что перед ним ставится больший элемент.
Продолжаем читать статью о функции сортировки в C ++
Partial_sort
C ++ STL предоставляет нам функцию частичной сортировки, эта функция похожа на функцию sort (), но в отличие от функции sort () она не используется для сортировки всего диапазона, а используется для сортировки только его части. Он сортирует элементы в диапазоне [первый, последний) таким образом, что элементы до среднего элемента сортируются в порядке возрастания, тогда как элементы после среднего остаются как есть.
Его можно использовать для поиска самого большого элемента, если мы используем объект функции для сортировки по первой позиции
пример
#include #include #include с использованием пространства имен std int main () {vector vec = {10, 45, 60, 78, 23, 21, 30} vector :: iterator iptr partial_sort (vec.begin (), vec.begin () + 1, vec.end (), больше ()) iptr = vec.begin () cout<< 'The largest element is = ' << *iptr return 0 }
Вывод:
Пояснение:
Приведенный выше код можно использовать для поиска наибольшего числа в серии, чтобы найти наименьшее число в серии, нам просто нужно удалить большую команду.
На этом мы подошли к концу статьи о функции сортировки в C ++. Если вы хотите узнать больше, посетите обучение Java от Edureka, надежной компании, занимающейся онлайн-обучением. Эдурека Курсы предназначены для обучения как основным, так и продвинутым концепциям Java, а также различным фреймворкам Java, таким как Hibernate и Spring.
Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев в этом блоге, и мы свяжемся с вами как можно скорее.