Сегодняшний вопрос касался частичного применения алгоритма быстрой сортировки. Следовательно, я получил возможность узнать, как работает алгоритм быстрой сортировки. В какой-то момент я застрял из-за некоторых сомнений, но мне удалось преодолеть это, получить результат и опубликовать его на моем Гитхабе.

Q - Учитывая массив и число k, где k меньше размера массива, нам нужно найти kᵗʰ наименьший элемент в данном массиве. Дано, что все элементы массива различны.

Этот метод называется Быстрый выбор, так как это частичная реализация алгоритма Быстрой сортировки.

Основная идея этого быстрого метода состоит в том, чтобы найти правильный индекс опорной точки, сопоставить его с k и затем вернуть его элемент. Если он не совпадает, мы проверяем, лежит ли k справа или слева от опорной точки, а затем создаем одиночный подмассив (в отличие от алгоритма Quicksort) и, соответственно, снова выполняем ту же функцию. Это продолжается до тех пор, пока мы не найдем точку опоры в самой позиции kᵗʰ.

Output:
The 9th minimum number in the array is 17

Ссылка: этот код был предоставлен ita_c на GeeksForGeeks.

Проблемы, с которыми я столкнулся при работе над этим вопросом

  1. Я не мог понять, почему k обновляется на каждой итерации.
  2. Кроме того, я не мог понять, почему l было вычтено из индекса точки поворота (pivot_in− l) в строке 19.

Оба сомнения были решены в этом вопросе о переполнении стека.

Если есть какие-либо исправления в коде или пояснении, сделайте комментарий. Спасибо, что прочитали!