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

Fungsi bsearch () di C ++ melakukan pencarian biner dari sebuah elemen dalam larik elemen dan mengembalikan pointer ke elemen tersebut jika ditemukan.

Fungsi bsearch () membutuhkan semua elemen yang kurang dari elemen yang akan dicari di sebelah kiri dalam array.

Demikian juga, semua elemen yang lebih besar dari elemen yang akan dicari harus berada di sebelah kanannya dalam larik. Persyaratan ini terpenuhi jika larik diurutkan dalam urutan menaik.

bsearch () prototipe

 void * bsearch (const void * key, const void * base, size_t num, size_t size, int (* bandingkan) (const void *, const void *));

Fungsi tersebut didefinisikan dalam file header.

Fungsi bsearch () mencari kunci dalam basis array. Semua elemen yang kurang dari kunci harus muncul sebelumnya dalam basis array. Demikian juga, semua elemen yang lebih besar dari kunci harus muncul setelahnya di basis.

Untuk melakukan pencarian, fungsi bsearch () membuat serangkaian panggilan ke fungsi yang ditunjukkan dengan membandingkan dengan kunci sebagai argumen pertama dan elemen dari array sebagai argumen kedua.

bsearch () Parameter

  • key: Arahkan ke elemen yang akan dicari
  • base: Pointer ke elemen pertama dari array
  • num: Jumlah elemen dalam array
  • size: Ukuran dalam byte dari setiap elemen dalam array
  • bandingkan: Penunjuk ke fungsi yang membandingkan dua elemen. Ia kembali
    • bilangan bulat negatif jika argumen pertama kurang dari yang kedua
    • bilangan bulat positif jika argumen pertama lebih besar dari yang kedua
    • nol jika kedua argumen sama

key dilewatkan sebagai argumen pertama dan elemen dari array dilewatkan sebagai argumen kedua. Prototipe dari fungsi perbandingan terlihat seperti:

 int bandingkan (const void * a, const void * b);

bsearch () Nilai kembali

Fungsi bsearch () mengembalikan:

  • Pointer ke elemen yang ditemukan. Jika lebih dari satu elemen yang cocok ditemukan, maka tidak ditentukan alamat elemen mana yang akan dikembalikan fungsi sebagai hasilnya.
  • Pointer nol jika elemen tidak ditemukan.

Contoh 1: Bagaimana fungsi bsearch () bekerja?

 #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; )

Saat Anda menjalankan program, hasilnya adalah:

 10 ditemukan di posisi 2 15 tidak ditemukan

Contoh 2: Bagaimana fungsi bsearch () bekerja untuk lebih dari satu elemen yang cocok?

 #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; )

Saat Anda menjalankan program, output yang mungkin adalah:

 14 ditemukan di posisi 7

Artikel yang menarik...