Lineáris keresés
Hívjuk be a random, Python bővítményt
Megadjuk az „N” értékét (ez lesz a lista hossza)
Töltsük fel az „A” nevű listát (ez a kódrészlet egy N hosszúságú listát hoz létre, amelynek elemei 1 és 100 között véletlenszerűen generált egész számok, és a range() függvény segítségével hozza létre a listát.)
Ki írjuk az „A” nevű listát, zárójelek és egyébb jelek nélkül
import random
N = 20
A = [random.randint(1, 100) for _ in range(0,N)]
print(*A)
i = 0
Létrehozunk egy változót, i
-t, amelynek kezdőértéke 0
van = False
Létrehozunk egy logikai változót, van
-t, amelynek kezdőértéke False
.
while i < N and not van:
Ez a ciklus addig fut, amíg az i
kisebb, mint N
és van
hamis. Az and
azt jelenti, hogy mindkét feltételnek igaznak kell lennie ahhoz, hogy a ciklus tovább fusson.
if A[i] % 3 == 0:
Az if
utasítás azt vizsgálja, hogy az aktuális elem hárommal osztható-e. Ha igen, akkor az if
blokk fut le.
van = True
Az if
utasítás azt vizsgálja, hogy az aktuális elem hárommal osztható-e. Ha igen, akkor az if
blokk fut le.
i += 1
Az i
változó értékét 1-gyel növeljük.
if van:
Az if
utasítás azt vizsgálja, hogy a van
változó értéke True
-e. Ha igen, akkor az if
blokk fut le.
print(f'\n 3, Az első hárommal osztható szám {A[i-1]}')
A print()
függvény segítségével kiírjuk az első hárommal osztható szám indexét és értékét. Az i-1
érték adja meg az indexet, mert az i
változó a ciklus végén már 1-gyel nagyobb, mint az utolsó vizsgált index.
else:
Ha a van
változó értéke False
volt, akkor az else
blokk fut le.
print(f'\n3, Nincs hárommal osztható szám a sorozatban')
A print()
függvény segítségével kiírjuk, hogy a listában nincs hárommal osztható szám.
Teljes kód:
i = 0
van = False
while i < N and not van:
if A[i] % 3 == 0:
van = True
i += 1
if van:
print(f'\n 3, Az első hárommal osztható szám {A[i-1]}') # mert az i += 1 akkor is le fut
else:
print(f'\n3, Nincs hárommal osztható szám a sorozatban')
van = False
Létrehozunk egy logikai változót, van
-t, amelynek kezdőértéke False
.
for i in range(N):
Létrehozunk egy for
ciklust, amely az A
lista összes elemére végigmegy.
if A[i] % 3 == 0:
Az if
utasítás azt vizsgálja, hogy az aktuális elem hárommal osztható-e. Ha igen, akkor az if
blokk fut le.
van = True
Az if
blokkban található utasítás beállítja a van
változó értékét True
-ra.
break
Az if
blokkban található break
utasítás miatt az i
változó értéke nem fog tovább növekedni, amikor találunk egy hárommal osztható számot.
if van:
Az if
utasítás azt vizsgálja, hogy a van
változó értéke True
-e. Ha igen, akkor az if
blokk fut le.
if van:
Az if
utasítás azt vizsgálja, hogy a van
változó értéke True
-e. Ha igen, akkor az if
blokk fut le.
print(f'\n 4, Az első hárommal osztható szám {A[i]}')
A print()
függvény segítségével kiírjuk az első hárommal osztható szám indexét és értékét. Az i
változó értéke adja meg az indexet, amelyet az if
blokkban találtunk meg.
else:
Ha a van
változó értéke False
volt, akkor az else
blokk fut le.
print(f'\n4, Nincs hárommal osztható szám a sorozatban')
A print()
függvény segítségével kiírjuk, hogy a listában nincs hárommal osztható szám.
Teljes kód:
van = False
for i in range(N):
if A[i] % 3 == 0: #10-nél a nincs lehetőséget kell ki írnika
van = True
break
if van:
print(f'\n 4, Az első hárommal osztható szám {A[i]}') # itt nem történik meg az inek a növelése, nem kell a -1
else:
print(f'\n4, Nincs hárommal osztható szám a sorozatban')
Összességében tehát a kód az első hárommal osztható szám keresésére szolgál egy adott listában két különböző módon. Az első módszer egy while
ciklust használ, amely addig fut, amíg megtalálja az első hárommal osztható számot. A második módszer egy for
ciklust használ, amely a lista összes elemére végigmegy, és a break
utasítás segítségével megáll, amikor megtalálja az első hárommal osztható számot.
A lineáris keresést leggyakrabban akkor használják, amikor egy adott elem jelenlétét kell ellenőrizni egy rendezetlen listában vagy tömbben. A lineáris keresés hatékony megoldás lehet, ha a lista vagy tömb mérete nem túl nagy, és nem rendelkezünk előzetes információval az elem helyéről.
Például, ha egy adott számot vagy sztringet kell keresni egy nagy méretű adatsoron belül, és nem tudjuk, hogy pontosan hol van, akkor a lineáris keresés lehet a megfelelő megoldás. A lineáris keresést alkalmazzák gyakran az adatbázisok lekérdezési folyamataiban is, amikor egy adott rekordot kell megtalálni egy nagy adatbázisban.
Azonban, ha a lista vagy tömb mérete nagyon nagy, vagy ha az elemek rendezettek, akkor hatékonyabb megoldás lehet más keresési algoritmusok használata, mint például a bináris keresés, amely gyorsabb keresési sebességet biztosít a rendezett adatszerkezetekben.