type
mass = array[1..3000] of integer;
procedure sortpusvosr(a: mass; n: integer);//sortirovka pusirkom po vosrastaniu
var
i, j, x, nx, l, r, c: integer;
begin
for i := 1 to n - 1 do
begin
for j := n - 1 downto 1 do
if a[j] > a[j + 1] then begin
x := a[j];
a[j] := a[j + 1];
a[j + 1] := x;
end;
end;
writeln('массив осторитированный пузырьком по возрастанию');
for i := 1 to n do
begin
write(a[i], ' ');
end;
end;
procedure sortpusubiv(a: mass; n: integer);//sortirovka pusirom po ubivaniu
var
i, j, x, nx, l, r, c: integer;
begin
for i := 1 to n - 1 do
begin
for j := n - 1 downto 1 do
if a[j] < a[j + 1] then begin
x := a[j];
a[j] := a[j + 1];
a[j + 1] := x;
end;
end;
writeln('массив осторитированный пузырьком по убыванию');
for i := 1 to n do
begin
write(a[i], ' ');
end;
end;
procedure MyRandom(n: integer; var a: mass);//generator sluchainix chisel bez povtorenii
var
m, i, j, x: integer;
f: Boolean;
begin
m := 2;
Randomize;
for i := 1 to n do
begin
repeat
f := false;
x := Random(100 + 1);
for j := 1 to m do
if a[j] = x then f := true;
until f = false;
a[i] := x;
m := m + 1;
end;
end;
procedure poisk(a: mass; n: integer; k: integer);//binarnii poisk
var
nk, r, l, c: integer;
begin
nk := 0;
L := 1; R := N;
while R >= L do
begin
c := (R + L) div 2;
if k = A[c] then begin
nk := c;
R := L - 1; { break; }
end;
if k < A[c] then R := c - 1;
if k > A[c] then L := c + 1;
end;
if nk < 1 then writeln('Не нашли...')
else writeln('A[', nk, ']=', k);
end;
procedure poisk_1(a: mass; n: integer; k: integer);//poisk pereborom
var
i, i1: integer;
begin
i1 := 0;
for i := 1 to n do
begin
if a[i] = k then begin
i1 := i;
break
end;
end;
write(i1);
end;
var
i, n, k: integer;
o,b, c, d: mass;
begin
randomize;
repeat
writeln('рамер массива');
readln(n);
until n in [2..2999];
writeln('исходный массив');
MyRandom(n, o);
for i := 1 to n do
begin
write(o[i], ' ');
end;
for i := 1 to n do
begin//zapisivaem pervonachalnii massiv icho v 3 t.k. nam pridetsia ispolsovat ego 3 raza
b[i] := o[i];
end;
for i := 1 to n do
begin
c[i] := o[i];
end;
for i := 1 to n do
begin
d[i] := o[i];
end;
writeln;
writeln('введите число к для поиска');
readln(k);
readln;
sortpusvosr(c, n);//sortiruem pervonachalnii massiv po vosrastaniu zapissanii v C
readln;
sortpusubiv(d, n);//sortiruem pervonachalnii massiv po ubivaniu zapisanii v D
readln;
poisk_1(o, n, k);//isem v neotsortirovannom massive
readln;
poisk_1(c, n, k);//v otsortirovannom po vosrastaniu
readln;
poisk_1(d, n, k);//v otsortirovannom po ubivaniu
readln;
poisk(c, n, k);//isem binarnim poiskom
readln;
poisk(d, n, k);
readln;
end.