
Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Чет про программирование / туф / 13_sort / qsort
.pas {$mode objfpc}
var
n, i: integer;
a: array of integer;
procedure swap(var i,j: integer);
var t: integer;
begin
t := i; i := j; j := t;
end;
procedure qsort(l, r: integer);
var
x: integer;
i, j: integer;
begin
write(l, ' ', r , ': ');
for i := l to r do
write(a[i], ' ');
writeln;
x := a[(l + r) div 2];
i := l;
j := r;
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 l < j then qsort(l, j);
if i < r then qsort(i, r);
end;
begin
randomize;
read(n);
setlength(a, n);
for i := 0 to n-1 do begin
read(a[i]);
end;
qsort(0, n-1);
for i := 0 to n-1 do
write(a[i], ' ');
writeln;
end.
var
n, i: integer;
a: array of integer;
procedure swap(var i,j: integer);
var t: integer;
begin
t := i; i := j; j := t;
end;
procedure qsort(l, r: integer);
var
x: integer;
i, j: integer;
begin
write(l, ' ', r , ': ');
for i := l to r do
write(a[i], ' ');
writeln;
x := a[(l + r) div 2];
i := l;
j := r;
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 l < j then qsort(l, j);
if i < r then qsort(i, r);
end;
begin
randomize;
read(n);
setlength(a, n);
for i := 0 to n-1 do begin
read(a[i]);
end;
qsort(0, n-1);
for i := 0 to n-1 do
write(a[i], ' ');
writeln;
end.