sort.pas
Petr "Zweistein" Prokop
{ zwei.stein@worldonline.cz, zweistein.kgb.cz }
Program doublebubbleshortsort;
{
(c) Petr "Zweistein" Prokop
Program sort :
extr‚mØ rychl metoda tý¡dØn¡ bez rekurze
}
Var I : integer; { index v cyklech}
N : integer; { PoŸet Ÿ¡sel }
A : array [1..255] of integer; {Pole s Ÿ¡sly}
B : integer; {Pomocn promØn na prohozen¡}
E : Boolean; {Pomocn promØn pro cyklus}
C : integer; {Zkracov n¡ cyklu}
Fini: integer;
Begin;
Write('Pocet_'); {Vstup poŸtu Ÿ¡sel }
Readln(N); { --//-- }
{For i:=1 to N do
begin;
Write('Cislo [',i,']_');
Readln(A[i]);
end;}
For i:=1 to N do a[i]:=trunc(random*10000); {Vlo§en¡ n hondìch Ÿ¡sel}
{ -------------------- }
C:=0;
repeat { zaŸ tek repeat cyklu }
E:=false; { posledn¡ cyklus }
for i:=1+c to N-1-c do { pro vçechny prvky pole A }
begin;
if a[i]>a[i+1] then { jestli je dals¡ prvek menç¡ pak}
begin;
b:=a[i]; { zapatuj hodnotu }
a[i]:=a[i+1]; { prohod Ÿ¡sla }
a[i+1]:=b; { obnov hodnotu }
E:=true; { jeçtØ nekonŸ¡me}
end;
if a[N-i]>a[N-i+1] then { podobn‚ jako u prvn¡ho ifu }
begin;
b:=a[N-i+1];
a[N-i+1]:=a[N-i];
a[N-i]:=b;
E:=true;
end;
end;
c:=c+1; { Zkr time cyklus }
until E=false; { To dØlej dokud nebude konec }
{ ------------------------ }
for i:=1 to N do Writeln('[',i,'] Cislo ',a[i]); { Vìpis vìsledku }
B:=0;
C:=N;
i:=trunc((B+C)/2);
E:=false;
write('Hledat_');
readln(fini);
repeat
i:=trunc((B+C)/2);
if a[i]fini then C:=I;
until (a[i]=Fini) or (b=c);
if (b<>c) then writeln('Nalezeno ',fini, ' na ',i,' miste.');
readln;
end.