{(c) 2001 Emur http://emur.org} program Trideni_a_hledani_v_poli; uses crt; const w=16; type pole= array [1..w] of integer; var p :pole; kl :char; x :integer; procedure generator(var p2 :pole); {generator nahodneho pole} var i: integer; begin randomize; for i:=1 to w do begin p2[i]:=random(100); write(p2[i]:4); end; writeln; end; procedure bubble(p2: pole; kles: boolean); {metoda bubble sort} var i,j :integer; begin for j:=1 to w do for i:=1 to w-1 do case kles of True :if p2[i]p2[i+1] then begin {prohozeni} p2[i]:=p2[i]+p2[i+1]; p2[i+1]:=p2[i]-p2[i+1]; p2[i]:=p2[i]-p2[i+1]; end; end; for i:=1 to w do write(p2[i]:4);writeln; end; procedure inzert(p2: pole; kles: boolean); {metoda Insert Sort} var i,j :integer; begin for i:=1 to w do for j:=i to w do case kles of True :if p2[i]p2[j] then begin {prohozeni} p2[i]:=p2[i]+p2[j]; p2[j]:=p2[i]-p2[j]; p2[i]:=p2[i]-p2[j]; end; end; for i:=1 to w do write(p2[i]:4);writeln; end; function hledej(p2 :pole; x2: integer): boolean; var vpoli: boolean; i,j,n: integer; begin for i:=1 to w do {srovnani pole na nekles} for j:=i to w do if p2[i]>p2[j] then begin {prohozeni} p2[i]:=p2[i]+p2[j]; p2[j]:=p2[i]-p2[j]; p2[i]:=p2[i]-p2[j]; end; {konec srovnani} i:=0; j:=w; {oznaceni intervalu} n:=w; vpoli:=true; while (x<>p2[n]) and vpoli do {zacatek hledani, puleni itervalu pole} begin n:=(i+j) div 2; {n - pulka intervalu pole} if i+1=j then vpoli:=false; {nastavi na false pokud 'x' nepatri do pole} if xHLAVNI PROGRAM<********************************} BEGIN clrscr; writeln('1. Generovat nahodne pole'); writeln('2. Seradit pole vzestupne pomoci Bubble Sort'); writeln('3. Seradit pole sestupne pomoci Bubble Sort'); writeln('4. Seradit pole vzestupne pomoci Insert Sort'); writeln('5. Seradit pole sestupne pomoci Insert Sort'); writeln('6. Vyhledat prvek pole pomoci puleni intervalu'); writeln('Ovladani: Enter, Esc, cisla 1 - 6'); window(1,9,79,24); repeat kl:=readkey; case kl of '1' :generator(p); '2' :bubble(p,False); {rostouci} '3' :bubble(p,True); {kles} '4' :inzert(p,False); '5' :inzert(p,True); '6' :begin write('Zadej hledany prvek: ');read(x); writeln('Je cislo ',x,' v poli? ',hledej(p,x)); end; #13 :clrscr; end; until kl=#27; END.