Hàm bsearch() trong C | Thư viện C chuẩn




Hàm bsearch() trong C

Hàm void *bsearch(const void *key, const void *base, nitems, size, int (*compar)(const void *, const void *)) tìm kiếm một mảng các đối tượng nitems, thành viên ban đầu của nó được trỏ tới bởi base, cho một thành viên mà kết nối đối tượng được trỏ tới bởi key. Kích cỡ của mỗi phần tử mảng được xác định bởi size.

Các nội dung của mảng nên là theo thứ tự tăng dần tương ứng với hàm so sánh được tham chiếu bởi compar.

Hàm bsearch(), là viết tắt của Binary Search, được viết dựa trên tư tưởng của giải thuật Tìm kiếm nhị phân (Binary Search), bạn có thể tham khảo giải thuật này tại Giải thuật tìm kiếm nhị phân.

Khai báo hàm bsearch() trong C

Dưới đây là phần khai báo cho bsearch() trong C:

void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))

Tham số

  • key: Đây là con trỏ tới đối tượng mà đóng vai trò như là key để tìm kiếm, được ép kiểu dưới dạng một void*.

  • base : Đây là con trỏ tới đối tượng đầu tiên của mảng, nơi cuộc tìm kiếm được thực hiện, được ép kiểu dưới dạng một void*.

  • nitems: Đây là số phần tử trong mảng được trỏ tới bởi base.

  • size: Đây là kích cỡ (giá trị byte) của mỗi phần tử trong mảng.

  • compare: Đây là hàm để so sánh hai phần tử.

Trả về giá trị

Hàm này trả về một con trỏ tới một entry trong mảng mà kết nối với key tìm kiếm. Nếu key không được tìm thấy, hàm trả về một con trỏ NULL.

Ví dụ

Chương trình C sau minh họa cách sử dụng của bsearch() trong C:

#include <stdio.h>
#include <stdlib.h>


int cmpfunc(const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}

int values[] = { 5, 20, 29, 32, 63 };

int main ()
{
   int *item;
   int key = 32;

   /* su dung ham bsearch() de tim gia tri 32 trong mang */
   item = (int*) bsearch (&key, values, 5, sizeof (int), cmpfunc);
   if( item != NULL ) 
   {
      printf("Da tim thay phan tu co gia tri = %d\n", *item);
   }
   else 
   {
      printf("Khong tim thay phan tu co gia tri = %d\n", *item);
   }
   
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Hàm bsearch trong C

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài Thư viện C phổ biến khác tại VietJack:


stdlib-h-trong-c.jsp


Tài liệu giáo viên