Re[12]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 21.12.10 14:20
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, PC_2, Вы писали:


PC_>>>>Алгоритм Квик сорт включает перемещение элементов на "одном участке" памяти.


PC_>>Открой для себя хотябы википедию.


H>Открыл:

H>

H>1) выбрать элемент, называемый опорным.
H>2) сравнить все остальные элементы с опорным, на основании сравнения разбить множество на три — «меньшие опорного», «равные» и «большие», расположить их в порядке меньшие-равные-большие.
H>3) повторить рекурсивно для «меньших» и «больших».

H>Именно это продемонтстированный алгоритм и выполняет. Только не для массивов, а для списков.

У вас наверное какаято своя персональная википедия

Выбираем в массиве некоторый элемент, который будем называть опорным элементом. С точки зрения корректности алгоритма выбор опорного элемента безразличен. С точки зрения повышения эффективности алгоритма выбираться должна медиана, но без дополнительных сведений о сортируемых данных её обычно невозможно получить. Известные стратегии: выбирать постоянно один и тот же элемент, например, средний или последний по положению; выбирать элемент со случайно выбранным индексом.
Операция разделения массива: реорганизуем массив таким образом, чтобы все элементы, меньшие или равные опорному элементу, оказались слева от него, а все элементы, большие опорного — справа от него. Обычный алгоритм операции:
Два индекса — l и r, приравниваются к минимальному и максимальному индексу разделяемого массива соответственно.
Вычисляется индекс опорного элемента m.
Индекс l последовательно увеличивается до m до тех пор, пока l-й элемент не превысит опорный.
Индекс r последовательно уменьшается до m до тех пор, пока r-й элемент не окажется меньше либо равен опорному.
Если r = l — найдена середина массива — операция разделения закончена, оба индекса указывают на опорный элемент.
Если l < r — найденную пару элементов нужно обменять местами и продолжить операцию разделения с тех значений l и r, которые были достигнуты. Следует учесть, что если какая-либо граница (l или r) дошла до опорного элемента, то при обмене значение m изменяется на r-й или l-й элемент соответственно.
Рекурсивно упорядочиваем подмассивы, лежащие слева и справа от опорного элемента.
Базой рекурсии являются наборы, состоящие из одного или двух элементов. Первый возвращается в исходном виде, во втором, при необходимости, сортировка сводится к перестановке двух элементов. Все такие отрезки уже упорядочены в процессе разделения.


H>А Вы кстати откройте для себя HQ9+ — PC чем-то не него смахивает.


И чемже ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.