E keresésnél mit rontok el, hogy végtelen ciklus keletkezik? (bővebben lent)
Figyelt kérdés
A logaritmikus keresést szerettem volna megvalósítani, tömb esetén. Valamiért nem működik.
program kereses;
var
t:array[0..999] of longint;
elem,i,u,v:longint;
l:boolean;
begin
for i:=0 to high(t) do
t[i]:=i;
elem:=97;
u:=0;
v:=high(t);
l:=false;
while (u<=v) and (not l) do
begin
i:=u+v div 2;
if t[i]=elem then l:=true;
if t[i]<elem then u:=i+1;
if t[i]>elem then v:=i-1;
end;
writeln(i);
end.
2020. okt. 23. 13:44
1/6 anonim válasza:
Azt most megmondom neked, hogy normális változó nevek és formázás nélkül a kutya se fogja neked kibogarászni.
2/6 A kérdező kommentje:
Nem izgat a véleményed. Minden változatában az algoritmusnak ezeket a változóneveket használják (u,v,i).
2020. okt. 23. 14:27
3/6 anonim válasza:
A tömböt feltöltő for ciklust nem kellene enddel lezárni?
4/6 A kérdező kommentje:
Mivel "begin" sincs, ezért nem, egyetlen utasítás van a ciklusmagban, ekkor nem kell begin-end páros.
2020. okt. 23. 14:54
5/6 A kérdező kommentje:
A következő érdekes dolog történik (kiiratva "i" értékét minden lépésben:
499
249
124
61
123
123
123
A 61 után elindul jobbra (elem nagyobb) és 123 számnál szépen végtelen ciklusba kerül.
2020. okt. 23. 14:58
6/6 A kérdező kommentje:
Az a fránya zárójelezés maradt ki. :-)
i:=(u+v) div 2;
Valamint ennél egyszerűbb, kevesebb összehasonlítást végző logaritmikus keresést végrehajtó algoritmust is találtam :-)
2020. okt. 23. 15:19
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!