Tento článok bol vytlačený zo stránky https://referaty.centrum.sk

 

Pascal - vyhľadávanie v poli

Vyhľadávanie
-je proces prezerania zložiek poľa s cieľom zistiť.či pole obsahuje zložku s danými vlastnosťami.
Rozoznávame dva druhy vyhľadávania: lineárne
binárne
Lineárne vyhľadávanie
-používa sa v neutriedených poliach
-je nutné porovnat každú zložku poľa
Binárne vyhľadávanie
-používa sa v utriedených poliach
-stačí zistiť,v ktorej polovici sa hľadaná zložka môže vyskytovať,tým zmenšiť interval...

Lineárne vyhľadávanie môžme uskutočniť pomocou cyklu so známym počtom opakovaní, ak potrebujeme zistiť počet opakujúcej sa hľadanej zložky (napr.koľkokrát sa v poli vyskytuje číslo.2). Cyklus s podmienkou na konci alebo na začiatku je výhodné použiť,ak nás zaujíma iba výskyt a miesto neopakujúcej sa zložky.

príklad na vyhľadávanie pomocou cyklu so známym počtom opakovaní
Dané je 10 prvkové pole naplnené celými čislami. Zaujíma nás výskyt a počet opakovaní hľadanej
zložky (čísla n).N je zadané z klávesnice.

var j,i,n:integer;
a:array [1..10] of integer;
begin
randomize;
for i:=1 to 10 do a[i]:=random(20);
readln(n);
j:=0;
for i:=1 to 10 do
if a[i]=n then j:=j+1;
if j>0 then writeln(´Číslo', n,' sa v poli vyskytuje ´,j,´ krát.´)
else writeln(´Číslo n sa v poli nevyskytuje.´);
readln;
end.

príklad na vyhľadávanie pomocou cyklu s podmienkou na konci
Dané je 20 prvkové pole naplnené celými číslami. Zaujíma nás výskyt a miesto hľadanej zložky (čísla n)
zadanej z klávesnice.

var i,n:integer;
a:array [1..20] of integer;
begin
randomize;
for i:=1 to 20 do a[i]:=random(50);
readln(n);
i:=0;
repeat
i:=i+1;
until (a[i]=n) or (i=20);
if a[i]=n then writeln(´Číslo n sa v poli nachádza na ´,i,´. mieste.)
else writeln(´Číslo n sa v poli nenachádza.);
readln;
end.
Binárne vyhľadávanie sa dá použiť iba v utriedenom poli. Zisťuje,v ktorej polovici
poľa sa hľadaná zložka môže vyskytovať a potom zmenšuje interval hľadania posunutím
dolnej alebo hornej hranice poľa. Využíva sa tu cyklus s podmienkou na konci alebo na
začiatku.

príklad s podmienkou na konci

var j,i,n,k,z:integer;
a:array [1..10] of integer;
begin
randomize;
readln(n);
for i:=1 to n do a[i]:=random(20);

i:=1;
j:=n;
repeat
k:=(i+j) div 2;
if a[k]<>z then
if a[k] else j:=k-1;
until (a[k]=z) or (i>j);
if z=a[k] then writeln(´Číslo sa v poli nachádza na ´,k,´.

mieste.´)
else writeln(´Číslo sa v poli nenachádza.);


vysvetlivky: i je dolná hranica poľa; j je horná hranica; n vyjadruje počet prvkov poľa;
z je hľadané číslo zadané z klávesnice; pohybujeme sa vo vzostupne usporiadanom
poli integerov.
v deklarácii: i,j,n,k,z sú celé čísla; a je typu array.

Koniec vytlačenej stránky z https://referaty.centrum.sk