C ++ bsearch () - C ++ Standard Library

A C ++ bsearch () függvénye bináris keresést végez egy elemről egy tömbben, és ha talál, akkor mutatót ad vissza az elemre.

A bsearch () függvényhez minden elemnél kevesebb elemre van szükség, hogy a tömbben tőle balra keressenek.

Hasonlóképpen, a keresendő elemnél nagyobb elemeknek a tömbtől jobbra kell lenniük. Ez a követelmény akkor teljesül, ha a tömb növekvő sorrendbe van rendezve.

bsearch () prototípus

 void * bsearch (const void * kulcs, const void * alap, size_t szám, size_t méret, int (* hasonlít) (const void *, const void *));

A függvény a fejlécfájlban van meghatározva.

A bsearch () függvény kulcsot keres a tömbbázisban. A kulcsnál kevesebb elemnek előtte kell megjelennie a tömbbázisban. Hasonlóképpen, minden kulcsnál nagyobb elemnek meg kell jelennie utána az alapban.

A keresés végrehajtása érdekében a bsearch () függvény hívássorozatot indít a függvényre, amelyet az első argumentumként összehasonlít a kulccsal, a második argumentumként pedig a tömb egyik elemével.

bsearch () Paraméterek

  • kulcs: A keresendő elem mutatója
  • alap: A tömb első elemének mutatója
  • num: A tömb elemének száma
  • méret: A tömb egyes elemeinek mérete bájtokban
  • összehasonlítás: Mutató egy függvényhez, amely két elemet hasonlít össze. Visszatér
    • negatív egész szám, ha az első argumentum kisebb, mint a második
    • pozitív egész szám, ha az első argumentum nagyobb, mint a második
    • nulla, ha mindkét argumentum egyenlő

kulcsot adunk át első argumentumként, a tömbből pedig egy elemet adunk át második argumentumként. Az összehasonlító függvény prototípusa a következőképpen néz ki:

 int összehasonlítani (const void * a, const void * b);

bsearch () Visszatérési érték

A bsearch () függvény visszatér:

  • A talált elem mutatója. Ha egynél több egyező elem található, akkor nincs megadva, hogy a függvény melyik elem címét adja eredményül.
  • Null mutató, ha az elem nem található.

1. példa: Hogyan működik a bsearch () függvény?

 #include #include using namespace std; int compare(const void* a, const void* b) ( const int* x = (int*) a; const int* y = (int*) b; return (*x - *y); ) int main() ( const int num = 10; int arr(num) = (5,9,10,14,16,19,21,26,29,31); int key1 = 10; int *p1 = (int*)bsearch(&key1,arr,num,sizeof(int),compare); if(p1 == NULL) cout << key1 << " not found " << endl; else cout << key1 << " found at position " << (p1-arr) << endl; int key2 = 15; int *p2 = (int*)bsearch(&key2,arr,num,sizeof(int),compare); if(p2 == NULL) cout << key2 << " not found " << endl; else cout << key2 << " found at position " << (p2-arr) << endl; return 0; )

A program futtatásakor a kimenet a következő lesz:

 10 található a 2. pozícióban 15 nem található

2. példa: Hogyan működik a bsearch () függvény több egyező elemnél?

 #include #include using namespace std; int compare(const void* a, const void* b) ( const int* x = (int*) a; const int* y = (int*) b; return (*x - *y); ) int main() ( const int num = 10; int arr(num) = (2,3,5,7,8,10,14,14,14,15); int key = 14; int *p = (int*)bsearch(&key,arr,num,sizeof(int),compare); if(p == NULL) cout << key << " not found " << endl; else /* 14 occurs at position 6,7 and 8*/ cout << key << " found at position " << (p-arr) << endl; return 0; )

A program futtatásakor egy lehetséges kimenet lesz:

 14 található a 7. pozícióban

érdekes cikkek...