Я оттуда прогу взял, а она неправильно работает!!! Самый последний элемент должен быть первым!!!
volvo
13.03.2007 0:59
Да ты что? Почему у меня тогда вот это:
const n = 20;
var
X: array[0 .. pred(n)] of integer;
i: integer;
beginfor i := 0to pred(n) do
X[i] := random(50);
for i := 0to pred(n) do write(X[i]:3);
writeln;
BinaryInsertionSort(X, n);
for i := 0to pred(n) do write(X[i]:3);
writeln;
end.
Program sortirovka;
const
n=8;
type
mas=array[0..n] of integer;
var
a:mas;
i,j:integer;
Procedure binarnie_vstavki(a:mas);
var
x,i,j,y,l,m,r,v,k:integer;
Begin
i:=2;
repeat
l:=1;
r:=i-1;
m:=(l+r) div2;
while l<>m dobeginif a[m-1]>a[i-1] then r:=m
else l:=m;
m:=(l+r) div2;
end;
if a[l-1]<a[i-1] thenbeginif a[i-1]>a[r-1] then l:=r+1else l:=r;
end;
k:=i;
v:=a[i-1];
while k>l dobegin
a[k-1]:=a[k-2];
k:=k-1;
end;
a[l-1]:=v;
i:=i+1;
Untilnot (i<=n);
writeln('Sortirovka binarnimi vstavkami');
for i:=1to n do write(a[i]:5);
writeln;
writeln('Chislo sravnenii:',y);
End;
Begin
randomize;
writeln('Isxodnii massiv:');
for i:=1to n dobegin
a[i]:=random(50)-25;
write(a[i]:5);
end;
writeln;
binarnie_vstavki(a);
readln;
End.