• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Быстрый метод сортировки(Делфи)

  • Автор темы Автор темы ZEKE
  • Дата начала Дата начала

ZEKE

Новые
Регистрация
15 Фев 2011
Сообщения
23
Реакции
0
Баллы
0
Быстрый метод сортировки(Делфи)

Здравствуйте. Помогите пожалуйста с нелепой проблемой. Имеется рабочий код быстрой сортировки массива. Программа должна выводить все иттерации. т.е. перестановки элементов по возрастанию. Но она выводит только конечный результат. Код взят из книги.
Код:
Program gutic_sort;
const n=500;
var arr : array [1..n] of real;
middle : real;
temp : real;
sp : integer;
i,j : integer;
f : text;
stackl, stackr : array [1..n] of integer;
left, right : integer;
begin
assign(f, 'D:\pascal\input.txt');  reset(f);
for i:=1 to n do read(f, arr[i]);
sp :=1; stackl[1]:=1; stackr[1]:=n;
while sp>0 do begin
left:=stackl[sp];
right:=stckr[sp];
dec(sp);
while left< right do begin
i:= left; j:=right;
middle:=arr[(left+right) div 2];
while i<j do begin
while arr[i]< middle do inc(i);
while middle< arr[j] do dec(j);
if i<= j then begin
temp:=arr[i]; arr[i]:=arr[j]; arr[j]:= temp:
inc(i): dec(j);
end;
end;
if i< right then begin
inc(sp);
stackl[sp]:=i;
stackr[sp]:= right;
end;
right:=j;
end;
end;
writeln;
for i:=1 to n do write(arr[i]:8:2);
writeln;
end.
 
Назад
Сверху