Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Бинарная сортировка

Автор: guf 7.05.2008 4:04

Поиск презрительно ничего не нашел...

Плиз дайте реализацию этого кода в виде кода на паскале или на псевдокоде.

Автор: guf 7.05.2008 4:53

Вообще это помоему разновидность быстрой сортировки если я не ошибаюсь...нашел токо бинарный поиск

Автор: volvo 7.05.2008 13:05

Цитата
это помоему разновидность быстрой сортировки если я не ошибаюсь
Не ошибаешься...
procedure qsort(var a: array of integer; lt, rg: integer);
var
med, i, j, X: integer;
begin
med := (lt + rg) div 2; { <--- вот поэтому она бинарная }
X := a[med];
i := lt;
j := rg;

while i <= j do begin

while (a[i] < X) do inc(i);
while (a[j] > X) do dec(j);

if (i <= j) then begin
swap(a[i], a[j]); { <--- это напишешь сам }
inc(i);
dec(j);
end;

end;

if (lt < j) then qsort(a, lt, j);
if (i < rg) then qsort(a, i, rg);
end;

Автор: guf 9.05.2008 2:47

Спасибо за помощь! Да swap в принципе ясно как написать...

Автор: Гость 27.06.2008 2:35

ну вообще то, пример, написанный выше является сортировкой оара. Это немного другое, как я понимаю... нужна попарная сорторовка.. если это устроило(любая сортировка) то норм, а иначе.. алгоритм попарной сортироки: сравниваются 1 и 2 элементы,3 и 4 элементы... затем 2 и 3, 4 и 5...этот процесс повторяется, пока перестановкав 1 и во 2 случае не прекратится.