C ++ bsearch () - Perpustakaan Standard C ++

Fungsi bsearch () dalam C ++ melakukan carian binari elemen dalam array elemen dan mengembalikan penunjuk ke elemen jika dijumpai.

Fungsi bsearch () memerlukan semua elemen kurang daripada elemen untuk dicari di sebelah kiri dalam array.

Begitu juga, semua elemen yang lebih besar daripada elemen yang hendak dicari mestilah berada di sebelah kanannya dalam array. Keperluan ini dipenuhi jika susunan disusun mengikut urutan menaik.

bsearch () prototaip

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

Fungsi ditentukan dalam fail header.

Fungsi bsearch () mencari kunci dalam pangkalan array. Semua elemen yang kurang daripada kekunci mesti muncul di hadapannya di pangkalan tatasusunan. Begitu juga, semua elemen yang lebih besar daripada kunci mesti muncul setelahnya di pangkalan.

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

  • kunci: Penunjuk ke elemen untuk dicari
  • asas: Penunjuk ke elemen pertama tatasusunan
  • num: Bilangan elemen dalam tatasusunan
  • size: Ukuran dalam bait setiap elemen dalam array
  • bandingkan: Penunjuk ke fungsi yang membandingkan dua elemen. Ia kembali
    • bilangan bulat negatif jika argumen pertama kurang daripada yang kedua
    • bilangan bulat positif jika argumen pertama lebih besar daripada yang kedua
    • sifar jika kedua-dua hujah itu sama

kunci diserahkan sebagai argumen pertama dan elemen dari larik diserahkan sebagai argumen kedua. Prototaip fungsi perbandingan kelihatan seperti:

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

bsearch () Nilai pulangan

Fungsi bsearch () mengembalikan:

  • Petunjuk ke elemen yang dijumpai. Sekiranya terdapat lebih daripada satu elemen yang sepadan, maka elemen yang tidak ditentukan akan berfungsi sebagai hasilnya.
  • Penunjuk kosong jika elemen tidak dijumpai.

Contoh 1: Bagaimana fungsi bsearch () berfungsi?

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

Semasa anda menjalankan program, outputnya adalah:

 10 dijumpai di kedudukan 2 15 tidak dijumpai

Contoh 2: Bagaimana fungsi bsearch () berfungsi untuk lebih daripada satu elemen yang sepadan?

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

Semasa anda menjalankan program, output yang mungkin adalah:

 14 dijumpai di kedudukan 7

Artikel menarik...