Az adatok keresésének lehetősége az informatika egyik fontos eleme. A keresési algoritmusok egy adott elem keresésére szolgálnak az adathalmazban.
Az algoritmusok logikai eredményt adnak vissza (igaz vagy hamis) a keresési lekérdezéshez. Ezeket módosítani is lehet, hogy megadják a talált érték relatív helyzetét.
Ebben a cikkben az algoritmusok annak meghatározására összpontosítanak, hogy létezik -e érték.
Lineáris keresési algoritmusok
A lineáris keresést szekvenciális keresésnek is nevezik. Az ilyen típusú kereséseknél a lista minden egyes értékét rendre felkeresik, miközben ellenőrzik, hogy létezik -e a kívánt érték.
Az algoritmus értékenként ellenőrzi az értéket, amíg meg nem találja a keresett értéket, vagy elfogy a keresendő érték. Ha elfogynak a keresendő értékek, ez azt jelenti, hogy a keresési lekérdezés nem létezik a listában.
A szekvenciális keresési algoritmus az értékek listáját és a lista kívánt elemét veszi paraméterként. A visszaküldési eredmény inicializálva van Hamis és át fog változni Igaz amikor megtalálta a kívánt értéket.
Példaként lásd az alábbi Python implementációt:
def linearSearch(mylist, item):
found = False
index = 0
while index if mylist[index] == item:
found = True
else:
index = index+1
return found
Algoritmus elemzés
A legjobb eset akkor fordul elő, ha a kívánt elem az első a listán. A legrosszabb eset akkor fordul elő, ha a kívánt elem az utolsó a listán (az n. Tétel). Ezért a lineáris keresés időbeli összetettsége O (n).
A fenti algoritmus átlagos eset forgatókönyve n/2.
Összefüggő: Mi az a Big-O jelölés?
Módosított lineáris keresés
Fontos tudni, hogy az alkalmazott algoritmus feltételezi, hogy az elemek véletlenszerű listája biztosított. Vagyis a listaelemek nincsenek külön sorrendben.
nézz youtube videókat bejelentkezés nélkül
Tegyük fel, hogy a tételek meghatározott sorrendben voltak, mondjuk a legkisebbtől a legnagyobbig. Lehetséges lenne valamilyen előnyt elérni a számításban.
Vegyünk egy példát arra, hogy a megadott listában 19 -et keresünk: [2, 5, 6, 11, 15, 18, 23, 27, 34]. A 23 év elérése után világossá válik, hogy a keresett elem nem létezik a listában. Ezért már nem lenne fontos folytatni a lista többi elemének keresését.
Bináris keresési algoritmusok
Látta, hogy a rendezett lista hogyan csökkentheti a szükséges számítást. A bináris keresési algoritmus még jobban kihasználja ezt a hatékonyságot, amelyet a rendezett lista vezet be.
Az algoritmus azzal kezdődik, hogy a megrendelt lista középső értékét veszi, és ellenőrzi, hogy ez a kívánt érték. Ha nem, akkor az érték ellenőrzi, hogy kisebb vagy nagyobb, mint a kívánt érték.
Ha kevesebb, akkor nincs szükség a lista alsó felének ellenőrzésére. Ellenkező esetben, ha nagyobb, akkor a lista felső felére lép.
Kapcsolódó: Mi a rekurzió és hogyan kell használni?
Függetlenül attól, hogy melyik allistát választja (bal vagy jobb), a középső érték ismét meghatározásra kerül. Az értéket ismét ellenőrzi, ha ez a szükséges érték. Ha nem, akkor ellenőrzik, hogy kisebb vagy nagyobb, mint a kért érték.
hogyan lehet megállítani a google hallgatását
Ezt a folyamatot addig ismételjük, amíg meg nem találjuk az értéket.
Az alábbi Python implementáció a bináris keresési algoritmusra vonatkozik.
def binarySearch (mylist, item):
low = 0
high = len(mylist) - 1
found = False
while low <= high and not found: mid = (low + high) // 2
if mylist[mid] == item:found = True
elif item else:low = mid + 1
return found
Algoritmus elemzés
A legjobb eset akkor fordul elő, ha a kívánt elem a középső elem. A legrosszabb forgatókönyv azonban nem ilyen egyszerű. Kövesse az alábbi elemzést:
Az első összehasonlítás után n/2 elem marad. A második után n/4 elem marad. A harmadik után n/8.
Figyeljük meg, hogy az elemek száma a felére csökken, amíg el nem éri az n/2i értéket, ahol i az összehasonlítások száma. Az összes felosztás után végül csak 1 tételt kapunk.
Ez magában foglalja:
n/2i = 1 Ezért a bináris keresés O (log n).
Tovább a rendezéshez
A bináris keresésben olyan esetet vettünk figyelembe, amikor az adott tömb már el volt rendelve. De tegyük fel, hogy rendezetlen adatkészlete volt, és bináris keresést akart végrehajtani rajta. Mit csinálnál?
A válasz egyszerű: rendezze. Az informatikában számos válogatási technika létezik, amelyeket jól kutattak. Az egyik ilyen technika, amelyet elkezdhet tanulmányozni, a kiválasztás rendezési algoritmusa, miközben rengeteg útmutatót találunk más területekhez is.
Részvény Részvény Csipog Email A kiválasztási rendezés használataA kiválasztás rendezése kicsit bonyolult a kezdők számára, de nem túl nagy kihívást jelent, ha megkapja a dolgok lendületét.
Olvassa tovább Kapcsolódó témák- Programozás
- Technológia magyarázata
- Programozás
- Algoritmusok
- Adatelemzés
Jerome a MakeUseOf munkatársa. A programozásról és a Linuxról szóló cikkekkel foglalkozik. Szintén kriptorajongó, és mindig figyelemmel kíséri a kriptoipart.
További Jerome DavidsonIratkozzon fel hírlevelünkre
Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!
Feliratkozáshoz kattintson ide