Как вы реализуете быструю сортировку с осью в средней позиции и как называется этот вариант?

0

Как реализовать quicksort с центром в среднем положении, а не в последнем/первом?

  • 2
    Как предполагает Кодор, это известно как Broken Quicksort :) В частности, это делает одно разбиение входного массива - обычно оно не сортирует его.
  • 1
    "Я разработал итеративную версию быстрой сортировки?" - нет, рекурсивная быстрая сортировка опирается на стек вызовов, чтобы отслеживать, какие части последовательности уже были отсортированы. Вам понадобится ваша собственная подобная стеку структура, чтобы отслеживать это в итерационной версии. Это просто этап «секционирования» обычной быстрой сортировки, в котором отсутствуют рекурсивные вызовы для сортировки разделов.
Показать ещё 5 комментариев
Теги:
algorithm
sorting
quicksort

2 ответа

-3
Лучший ответ

Ответ лежит в статье Википедии, связанной с этим сообщением.

  • 0
    почему бы не использовать std::partition ? coliru.stacked-crooked.com/a/045c59d7f0113db3
  • 0
    Отвечать на свой вопрос и принимать этот ответ явно разрешено; для этого есть даже значок. (Я пытался быть простым, извините, если я был / с сарказмом.)
Показать ещё 2 комментария
2

Кажется, это Quicksort, как предполагает название функции; однако, по-видимому, нет рекурсивного вызова для сортировки деталей после поворота. Я предлагаю вывести выход из функции quickSort и добавить рекурсивные вызовы к частям массива после поворота и перегруппировки.

  • 0
    Спасибо всем за отзывы. Что произойдет, если я переместу левый и правый приращения индексов внутри блоков if {}? Правильно ли разделить массив?
  • 0
    Кстати, это не домашняя работа, я просто люблю алгоритмы ... Моя цель - разделить массив с осью в центре, а не использовать первый / последний элемент. Таким образом, время выполнения наихудшего сценария улучшается. Любые предложения, пожалуйста?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню