Python: zoznam – hľadanie maxima, hľadanie prvku.

zoznam je indexovaná štruktúra, to znamená každý prvok má svoju pozíciu (adresu) kde sa nachádza, je to ako poradové číslo. Index začína na hodnote 0 tz. nie 1 ako by sa nám možno zdalo logickejšie

p=[9,5,7,8,6,14,78,2,98] – vytvorenie 9 členného zoznamu s názvom p
p[0] na nultej pozícii je číslo 9
p[5] na piatej pozícii je 14

Existuje funkcia max(), ktorá vráti najväčší prvok zoznamu, ale v algoritme si ukážeme ako nájsť maximum bez tejto funkcie.

Zistenie najväčšej hodnoty v zozname

Do pomocnej premennej najvac si dáme prvý člen zoznamu –p. Danú premennú najvac porovnávame s ďalšími členmi zoznamu p, ak nájdeme člena v zozname p väčšieho ako je najvac, tak do najvac vložíme nájdenú väčšiu hodnotu. Takto pokračujeme až do konca zoznamu.

import random #importujeme náhodné čísla
p=[] # vytvoríme prázdny zoznam prvkov s názvom p
n=int(input(‚zadaj pocet prvkov‘))
for i in range(n): # koľko sme si zvolili prvkov n , toľko krát budeme pridávať

p.append(random.randrange(100)) #do zoznamu náhodné číslo do veľkosti 100

print(p) # vypíšeme zoznam p
najvac=p[0] # vytvoríme si premennú do ktorej dáme prvý člen zoznamu
pn=0 #pozícia najväčšieho čísla

for i in range(1, len(p)): #prejdeme všetkými prvkami zoznamu

if najvac < p[i]: #každý prvok pola porovnáme s najvac a ak je väčší ako najvac

najvac=p[i] # do najvac dáme prvok zoznamu, ktorý je väčší ako najvac
pn=i # do pn dáme pozíciu, kde sme väčšie číslo ako najvac našli

print(‚najvacsia hodnota je {} na pozicii {}‘.format(najvac,pn))

 

Hľadanie prvku v zozname

Zadáme si kritérium hľadania, vytvoríme pomocnú premennú ktorú nastavíme mimo rozsah indexov zoznamu aktuálne na zápornú hodnotu.

Zadané kritérium budeme porovnávať so všetkými prvkami zoznamu, ak nájdeme zhodu s niektorým prvkom, odložíme si index pozície kde prišlo k zhode.

Daný algoritmus pokračuje ďalej a tak nájde vlastne výskyt poslednej zhody, nie prvej.

Ak nám stačí prvej zhody, cyklus prehľadávania ukončíme v mieste zhody.

Existuje metóda zoznamu – index() táto vráti hodnotu indexu prvého výskytu.

import random #importujeme náhodne čísla
p=[]# vytvoríme prázdny zoznam prvkov s názvom p
n=int(input(‚zadaj pocet prvkov‘))

for i in range(n): # koľko sme si zvolili prvkov n , toľko krát budeme pridávať

p.append(random.randrange(100)) #do zoznamu náhodné číslo do veľkosti 100

print(p)
hl=int(input(‚zadaj kriterium na hladanie – cislo‘))
phl=-1 #pozícia hľadaného na začiatok mimo rozsah

for i in range(len(p)):#prejdeme všetkými prvkami zoznamu

if hl == p[i]:# ak sa niektorý prvok v zozname p rovná hľadanému prvku hl- kritérium

phl=i # do phl odložím pozíciu kde sa našla zhoda s hľadaným prvkom

if phl >= 0: # ak je pozícia hľadaného väčšia alebo rovná 0, tak sa prvok našiel a v phl máme pozíciu kde sa nachádza hľadaný prvok

print(‚nachadza sa na pozicii {}‘.format(phl))

else:

print(‚nenachadza sa ‚)

 

Zlúčenie usporiadaných postupností

Jedná sa o zlúčenie dvoch postupností, kde každá je usporiadaná a má po 10 prvkov.

program zlucenie4;

uses crt;
var x,y,z,i:integer;
a,b,c:array[1..30]of integer;
begin
randomize;
a[1]:=random(5);
b[1]:=random(5);

for i:= 2 to 10 do
begin
a[i]:=a[i-1]+random(5);
b[i]:=b[i-1]+random(5);
end;
write(‚a: ‚);
for i:= 1 to 10 do
write(a[i],‘ ‚);
writeln;
write(‚b: ‚);
for i:= 1 to 10 do
write(b[i],‘ ‚);
writeln;
x:=1;
y:=1;
z:=1;
while (y<11) and (x<11) do
begin
if a[x]>b[y] then begin
c[z]:=b[y];
inc(z);
if y<11 then inc(y);
end
else begin
c[z]:=a[x];
inc(z);
if x<11 then inc(x);
end;

end;
writeln;
if x<y then begin
for i:= x to 10 do
begin
c[z]:=a[i];
inc(z)
end;
end
else begin
for i:= y to 10 do
begin
c[z]:=b[i];
inc(z)
end;
end;

for i:= 1 to 20 do
write(c[i],‘ ‚);

readln;
end.

Jednorozmerné pole

Dnes sa pozrieme na jednorozmerné pole.

Ukážeme si, ako by sa dalo priblížiť reálnemu svetu a ako pristupovať k jednotlivým položkám v poli.

Príjemné pozeranie.

V pripade akýchkoľvek nejasností ma kontaktujte 🙂

Prvý program v prostredí Lazarus