Программа Php для проверки возможности сортировки массива после его поворота
Опубликовано: 19 Сентября, 2022
Учитывая массив размера N, задача состоит в том, чтобы определить, можно ли отсортировать массив всего за одну перетасовку. За один раз мы можем сдвинуть несколько смежных элементов с конца массива и поместить их в начало массива.
Например:
- A = {2, 3, 1, 2}, we can shift {1, 2} from the end of the array to the front of the array to sort it.
- A = {1, 2, 3, 2} since we cannot sort it in one shuffle hence it’s not possible to sort the array.
Примеры:
Input: arr[] = {1, 2, 3, 4}
Output: Possible
Since this array is already sorted hence no need for shuffle.
Input: arr[] = {6, 8, 1, 2, 5}
Output: Possible
Place last three elements at the front
in the same order i.e. {1, 2, 5, 6, 8}
Подход:
- Проверьте, отсортирован ли массив уже или нет. Если да, верните true.
- В противном случае начните обход элементов массива, пока текущий элемент не станет меньше следующего элемента. Сохраните этот индекс, где arr[i] > arr[i+1].
- Пройдите от этой точки и проверьте, находятся ли элементы этого индекса в порядке возрастания или нет.
- Если выше оба условия выполнены, проверьте, меньше ли последний элемент первого элемента данного массива или равен ему.
- Выведите «Возможно», если выполняются три вышеуказанных условия, иначе выведите «Невозможно», если любое из трех вышеуказанных условий не выполнено.
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(n)
Вспомогательное пространство: O(1)
Пожалуйста, обратитесь к полной статье о проверке возможности сортировки массива после его вращения для получения более подробной информации!