program SortingTwoWay;
{
Задача:
- по курсу #1 : Алгоритмы Сортировка
Решение:
- автор Дмитрий Кузнецов
- цена $108.00
}
const
n = 100;
type
item=word;
index=byte;
mas=array[1..n] of item;
var
a :mas;
i,j :index;
f :file of mas;
procedure binsort(left,right:index);
var
i,j,m,l,r :index;
x :item;
begin
for i:=left+1 to right do
begin
l:=left;
r:=i;
x:=a[i];
while l<r do
begin
m:=(l+r) div 2;
if a[m]<=x then
l:=m+1
else
r:=m
end;
for j:=i downto r+1 do
a[j]:=a[j-1];
a[r]:=x
end
end;
procedure qsort(l,r:index);
var
i,j :index;
w,x :item;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];
repeat
while a[i]<x do inc(i);
while a[j]>x do dec(j);
if i<=j then
begin
w:=a[i];
a[i]:=a[j];
a[j]:=w;
inc(i);
dec(j)
end;
until i>j;
if l<j then
if j-l>10 then
qsort(l,j)
else
binsort(l,j);
if i<r then
if r-i>10 then
qsort(i,r)
else
binsort(i,r);
end;
begin
randomize;
for i:=1 to n do
a[i]:=random(1000);
for i:=0 to 9 do
begin
for j:=1 to 10 do
write(a[i*10+j]:5);
writeln
end;
{----------------------------------------------}
qsort(1,n);
{----------------------------------------------}
writeln;
for i:=0 to 9 do
begin
for j:=1 to 10 do
write(a[i*10+j]:5);
writeln
end;
readln
end.
cHJvZ3JhbSBTb3J0aW5nVHdvV2F5Owp7CgnQl9Cw0LTQsNGH0LA6CgkgIC0g0L/QviDQutGD0YDRgdGDICMxIDog0JDQu9Cz0L7RgNC40YLQvNGLINCh0L7RgNGC0LjRgNC+0LLQutCwCgnQoNC10YjQtdC90LjQtToKCSAgLSDQsNCy0YLQvtGAINCU0LzQuNGC0YDQuNC5INCa0YPQt9C90LXRhtC+0LIKICAgICAgLSDRhtC10L3QsCAkMTA4LjAwCn0KY29uc3QKICBuID0gMTAwOwoKdHlwZQogIGl0ZW09d29yZDsKICBpbmRleD1ieXRlOwogIG1hcz1hcnJheVsxLi5uXSBvZiBpdGVtOwoKdmFyCiAgICBhICAgICAgICAgICAgICAgOm1hczsKICAgIGksaiAgICAgICAgICAgICA6aW5kZXg7CiAgICBmICAgICAgICAgICAgICAgOmZpbGUgb2YgbWFzOwoKcHJvY2VkdXJlIGJpbnNvcnQobGVmdCxyaWdodDppbmRleCk7CnZhcgogIGksaixtLGwsciAgIDppbmRleDsKICB4ICAgICAgICAgICA6aXRlbTsKYmVnaW4KZm9yIGk6PWxlZnQrMSB0byByaWdodCBkbwogIGJlZ2luCiAgbDo9bGVmdDsKICByOj1pOwogIHg6PWFbaV07CiAgd2hpbGUgbDxyIGRvCiAgICBiZWdpbgogICAgbTo9KGwrcikgZGl2IDI7CiAgICBpZiBhW21dPD14IHRoZW4KICAgICAgbDo9bSsxCiAgICBlbHNlCiAgICAgIHI6PW0KICAgIGVuZDsKICBmb3Igajo9aSBkb3dudG8gcisxIGRvCiAgICBhW2pdOj1hW2otMV07CiAgYVtyXTo9eAogIGVuZAoKZW5kOwoKCnByb2NlZHVyZSBxc29ydChsLHI6aW5kZXgpOwp2YXIKICBpLGogICAgICAgICA6aW5kZXg7CiAgdyx4ICAgICAgICAgOml0ZW07CmJlZ2luCmk6PWw7Cmo6PXI7Cng6PWFbKGwrcikgZGl2IDJdOwpyZXBlYXQKICB3aGlsZSBhW2ldPHggZG8gaW5jKGkpOwogIHdoaWxlIGFbal0+eCBkbyBkZWMoaik7CiAgaWYgaTw9aiB0aGVuCiAgICBiZWdpbgogICAgdzo9YVtpXTsKICAgIGFbaV06PWFbal07CiAgICBhW2pdOj13OwogICAgaW5jKGkpOwogICAgZGVjKGopCiAgICBlbmQ7CnVudGlsIGk+ajsKCmlmIGw8aiB0aGVuCiAgaWYgai1sPjEwIHRoZW4KICAgIHFzb3J0KGwsaikKICBlbHNlCiAgICBiaW5zb3J0KGwsaik7CgppZiBpPHIgdGhlbgogIGlmIHItaT4xMCB0aGVuCiAgICBxc29ydChpLHIpCiAgZWxzZQogICAgYmluc29ydChpLHIpOwogICAKZW5kOwoKYmVnaW4KcmFuZG9taXplOwpmb3IgaTo9MSB0byBuIGRvCiAgYVtpXTo9cmFuZG9tKDEwMDApOwoKZm9yIGk6PTAgdG8gOSBkbwogIGJlZ2luCiAgZm9yIGo6PTEgdG8gMTAgZG8KICAgIHdyaXRlKGFbaSoxMCtqXTo1KTsKICB3cml0ZWxuCiAgZW5kOwoKey0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS19CnFzb3J0KDEsbik7CnstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfQoKd3JpdGVsbjsKCmZvciBpOj0wIHRvIDkgZG8KICBiZWdpbgogIGZvciBqOj0xIHRvIDEwIGRvCiAgICB3cml0ZShhW2kqMTAral06NSk7CiAgd3JpdGVsbgogIGVuZDsKcmVhZGxuCmVuZC4K