Lineáris és bináris keresési algoritmusok magyarázata

Lineáris és bináris keresési algoritmusok magyarázata

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?

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álata

A 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
A szerzőről Jerome Davidson(22 cikk megjelent)

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 Davidson

Iratkozzon 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