При заданном K-возрастающем-убывающем массиве arr [] задача состоит в том, чтобы отсортировать данный массив. Говорят, что массив увеличивается-уменьшается-уменьшается, если элементы многократно увеличиваются до определенного индекса, после чего они уменьшаются, а затем снова увеличиваются, в общей сложности в K раз. Диаграмма ниже показывает 4-убывающий массив.
Пример:
Input: arr[] = {57, 131, 493, 294, 221, 339, 418, 458, 442, 190}
Output: 57 131 190 221 294 339 418 442 458 493Input: arr[] = {1, 2, 3, 4, 3, 2, 1}
Output: 1 1 2 2 3 3 4
Подход. Метод грубой силы заключается в сортировке массива без использования свойства k-увеличения-уменьшения. Временная сложность этого подхода составляет O (n logn), где n — длина массива.
Если k значительно меньше, чем n, можно найти лучший подход с меньшей сложностью по времени. Например, если k = 2, входной массив состоит из двух подмассивов: один увеличивается, а другой уменьшается. Обращение второго подмассива дает два отсортированных массива, а затем результат объединяется, что можно сделать за O (n) раз. Обобщая, мы могли бы сначала изменить порядок каждого из убывающих подмассивов. Например, на приведенном выше рисунке массив может быть разбит на четыре отсортированных массива как {57, 131, 493}, {221, 294}, {339, 418, 458} и {190, 442}. Теперь метод с минимальной кучей может использоваться для объединения этих отсортированных массивов .
Ниже приведена реализация вышеуказанного подхода:
|
Выход:
57 131 190 221 294 339 418 442 458 493
Сложность времени: O (n * logk), где n — длина массива.
Рекомендуемые посты:
- Программа для сортировки массива строк с использованием Selection Sort
- Сортировка ведра для сортировки массива с отрицательными числами
- Сортировать массив, где подмассив отсортированного массива находится в обратном порядке.
- Сортировать массив в соответствии с порядком, определенным другим массивом
- Сравнение между Bubble Sort, Selection Sort и Inorttion Sort
- Сортировать массив 0, 1 и 2
- Сортировать почти отсортированный массив с помощью STL
- Сортировать массив, который содержит от 1 до n значений
- Как отсортировать большой массив со многими повторениями?
- Как отсортировать массив дат в C / C ++?
- Сортировать массив больших чисел
- Сортировать массив в заданном диапазоне индекса
- Сортировать двоичный массив, используя один обход
- Сортировать массив по абсолютной разнице с заданным значением
- Сортировать массив по количеству установленных бит
0.00 (0%) 0 votes