binary search

Üdvözlöm, Ön a binary search szó jelentését keresi. A DICTIOUS-ban nem csak a binary search szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a binary search szót egyes és többes számban mondani. Minden, amit a binary search szóról tudni kell, itt található. A binary search szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Abinary search és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

binary search (tsz. binary searches)

  1. (informatika) bináris keresés

A bináris keresés egy hatékony keresési algoritmus, amelyet rendezett tömbökben vagy listákban használnak egy adott elem megkeresésére. Az algoritmus lényege, hogy minden lépésben felezi a keresési területet, így jelentősen gyorsabb, mint a lineáris keresés.

1. Bináris keresés működése

A bináris keresés alapötlete a következő: 1. Kezdeti feltételezés: A keresett elem egy rendezett tömbben található. 2. Középső elem kiválasztása: Megvizsgáljuk a tömb közepén lévő elemet. 3. Döntés: - Ha a középső elem megegyezik a keresett elemmel, akkor megtaláltuk. - Ha a keresett elem kisebb, mint a középső, akkor a keresést a tömb bal felében folytatjuk. - Ha a keresett elem nagyobb, mint a középső, akkor a keresést a tömb jobb felében folytatjuk. 4. Ismétlés: A folyamatot addig ismételjük, amíg meg nem találjuk az elemet, vagy a keresési tartomány ki nem merül.

A bináris keresés legrosszabb esetben O(log n) időbonyolultságú, ami sokkal gyorsabb, mint a lineáris keresés O(n) időbonyolultsága.



2. Iteratív bináris keresés C++ nyelven

Az iteratív változatnál egy ciklus segítségével hajtjuk végre a keresést.

Kód:

#include <iostream>
using namespace std;

int binarisKereses(int tomb, int meret, int keresett) {
    int bal = 0, jobb = meret - 1;

    while (bal <= jobb) {
        int kozep = bal + (jobb - bal) / 2;

        // Ha megtaláltuk
        if (tomb == keresett)
            return kozep;

        // Ha a keresett elem kisebb, a bal oldalon folytatjuk
        if (tomb > keresett)
            jobb = kozep - 1;
        else
            // Ha nagyobb, a jobb oldalon folytatjuk
            bal = kozep + 1;
    }

    return -1; // Ha nem található
}

int main() {
    int tomb = {2, 3, 4, 10, 40};
    int meret = sizeof(tomb) / sizeof(tomb);
    int keresett = 10;

    int eredmeny = binarisKereses(tomb, meret, keresett);
    if (eredmeny != -1)
        cout << "Elem megtalálva az indexen: " << eredmeny << endl;
    else
        cout << "Elem nincs a tömbben." << endl;

    return 0;
}

Hogyan működik?

  1. Először a középső elemet vizsgáljuk meg.
  2. Ha a keresett érték kisebb, akkor az alsó tartományban folytatjuk a keresést.
  3. Ha a keresett érték nagyobb, akkor a felső tartományban folytatjuk.
  4. A folyamat addig ismétlődik, amíg az elemet meg nem találjuk, vagy a keresési tartomány ki nem merül.



3. Rekurzív bináris keresés C++ nyelven

A bináris keresés rekurzív módon is megvalósítható, ahol a keresési tartományt egy rekurzív függvényhívás szűkíti.

Kód:

#include <iostream>
using namespace std;

int binarisKeresesRekurziv(int tomb, int bal, int jobb, int keresett) {
    if (bal <= jobb) {
        int kozep = bal + (jobb - bal) / 2;

        // Ha megtaláltuk
        if (tomb == keresett)
            return kozep;

        // Ha a keresett kisebb, a bal oldali tartományban keresünk
        if (tomb > keresett)
            return binarisKeresesRekurziv(tomb, bal, kozep - 1, keresett);

        // Ha a keresett nagyobb, a jobb oldali tartományban keresünk
        return binarisKeresesRekurziv(tomb, kozep + 1, jobb, keresett);
    }

    return -1; // Ha nem található
}

int main() {
    int tomb = {2, 3, 4, 10, 40};
    int meret = sizeof(tomb) / sizeof(tomb);
    int keresett = 10;

    int eredmeny = binarisKeresesRekurziv(tomb, 0, meret - 1, keresett);
    if (eredmeny != -1)
        cout << "Elem megtalálva az indexen: " << eredmeny << endl;
    else
        cout << "Elem nincs a tömbben." << endl;

    return 0;
}

Hogyan működik?

  • A függvény minden hívásnál megkeresi a középső elemet.
  • Ha az egyezik a keresett értékkel, visszaadja az indexet.
  • Ha kisebb a keresett érték, a bal oldali részben folytatja a keresést.
  • Ha nagyobb, a jobb oldali részben keres tovább.
  • A folyamat addig ismétlődik, amíg a keresési tartomány üres nem lesz.



4. Bináris keresés teljesítménye

Eset Időbonyolultság
Legjobb eset O(1) (ha elsőre megtaláljuk)
Átlagos eset O(log n)
Legrosszabb eset O(log n)

A logaritmikus időbonyolultság miatt a bináris keresés sokkal gyorsabb, mint a lineáris keresés. Például: - Egy 1 000 000 elemű tömbben a lineáris keresés akár 1 000 000 lépést is igényelhet. - A bináris keresés legrosszabb esetben log₂(1 000 000) ≈ 20 lépés alatt végez.



5. Összegzés

A bináris keresés egy rendkívül hatékony algoritmus, amely rendezett tömbökben használható. Az iteratív és rekurzív változatok egyaránt gyorsabbak, mint a hagyományos lineáris keresés.

Előnyök:

✅ Nagyon gyors (O(log n))
✅ Könnyen implementálható
✅ Iteratív és rekurzív módon is működik

Hátrányok:

❌ Csak rendezett adatszerkezetekben használható
❌ Rekurzív változat esetén nagy adathalmazoknál stack overflow léphet fel