Алгоритм разбиения Lomuto зависит от того, какая ось является самым левым элементом разделяемого подмассива.Его также можно изменить, чтобы использовать вместо него самый правый элемент оси;например, см. главу 7 CLRS.
Использование произвольного значения для сводной точки (скажем, что-то не в подмассиве) может привести к путанице в реализации быстрой сортировки, поскольку не будет никакой гарантии, что ваш раздел создал проблемунемного меньше.Скажем, у вас было ноль в качестве значения, на которое вы поворачивались, но все записи массива N были положительными.Тогда ваш раздел даст массив нулевой длины элементов <= 0 и массив длины N, содержащий элементы> = 0 (что все они).В этом случае вы получите бесконечный цикл, пытаясь выполнить быструю сортировку.То же самое, если вы пытались найти медиану массива, используя эту измененную форму раздела Lomuto.Раздел решающим образом зависит от выбора элемента из массива для разворота.Вы в основном потеряете постусловие, что элемент (ось) будет исправлен на месте после раздела, что гарантирует раздел Lomuto.
Алгоритм Lomuto также критически зависит от поворота элемента, который находится впервая или последняя позиция разделяемого массива.Если вы повернете элемент, не расположенный ни в самом начале, ни в самом конце массива, то инвариант цикла, являющийся ядром того, почему работает раздел Lomuto, станет кошмаром.
Вы можете повернуть другой объектэлемент массива путем замены его на первый (или последний, если вы реализуете его таким образом) элемент в качестве первого шага.Посмотрите видео-лекцию MIT по быстрой сортировке для курса 6.046J, где подробно рассматриваются алгоритм разделения Lomuto (хотя они просто называют его разделением) и ванильная реализация быстрой сортировки на его основе, не говоря уже о большой вероятности обсуждения ожидаемого времени выполнениярандомизированная форма быстрой сортировки:
http://www.youtube.com/watch?v=vK_q-C-kXhs
У CLRS и Pearls Programming есть отличные разделы по быстрой сортировке, если, возможно, вы застряли, используя подчиненную книгу для класса алгоритмов или чего-то еще.