CÁC HÀM C / C++
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Hàm bsearch() trong C / C++

Trong bài viết này chúng ta sẽ tìm hiểu về hàm bsearch() trong C / C++. Đây là một hàm được sử dụng trong các bài tập về mảng và cụ thể là các bài tập về tìm kiếm trong mảng.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hàm bsearch() là hàm có sẵn trong thư viện cstdlib, vì vậy trước khi sử dụng nó các bạn nhớ khai báo thư viện đã nhé: #include<cstdlib>

Cú pháp hàm bsearch() trong C/ C++

Hàm bsearch () trong C ++ thực hiện tìm kiếm nhị phân của một phần tử trong một mảng các phần tử. Hàm trả về một con trỏ đến phần tử nếu được tìm thấy.

Cú pháp:

Bài viết này được đăng tại [free tuts .net]

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

Trong đó:

  • key: Con trỏ đến phần tử cần tìm kiếm.
  • base: Con trỏ đến phần tử đầu tiên của mảng.
  • num: Số phần tử trong mảng.
  • size: Kích thước tính bằng byte của mỗi phần tử trong mảng
  • compare: Một con trỏ đến một hàm so sánh hai phần tử và nó trả về:
    • Một số nguyên âm nếu đối số đầu tiên nhỏ hơn đối số thứ hai.
    • Một số nguyên dương nếu đối số đầu tiên lớn hơn đối số thứ hai.
    • Không nếu cả hai đối số bằng nhau.

Cách dùng hàm bsearch trong C / C++

Trong phần này mình sẽ thực hiện một ví dụ để mình họa cho hàm bsearch trong C++.

Đầu tiên chúng ta sẽ tạo hàm Compare() để so sánh các phần tử trong mảng với giá trị cần tìm.

Sau đó sử dụng hàm bsearch() để tìm kiếm biến key trong mảng arr[] rồi thông báo khi tìm thấy hoặc không tìm thấy.

#include <iostream>
#include <cstdlib>
using namespace std;
// hàm compare được sử dụng để so sánh các phần tử trong mảng với số cần tìm
int compare(const void* a, const void* b)
{
	const int* x = (int*) a;
	const int* y = (int*) b;
	return (*x - *y);
}

int main() {
  //khởi tạo biến num là độ dài của mảng
  const int num = 6;
  //khai báo và khởi tạo giá trị cho các phần tử trong mảng
	int arr[num] = {2,3,5,7,8,10};
  //khai báo và khởi tạo giá trị cần tìm kiếm trong mảng
	int key = 10;
  //sử dụng hàm bsearch để tìm kiếm biến key trong mảng
	int *p = (int*)bsearch(&key,arr,num,sizeof(int),compare);
  //in ra thông báo khi tìm thấy hoặc không tim thấy key trong mảng
	if(p == NULL)
		cout << key << " Không tìm thấy "<< key <<" trong mảng" << endl;
	else
		cout << " Đã tìm thấy "<< key <<" trong mảng tại vị trí " << (p-arr) << endl;

  cout<<"\n--------------------------------\n";
  cout<<"Chương trình này được đăng tại freetuts.net";
}

Kết quả:

bsearch 01 PNG

Như vậy là chúng ta đã tìm hiểu xong hàm bsreach() trong C / C++. Đây là một hàm được sử dụng khá nhiều trong các bài tâp về mảng, vì vậy hãy luyện tập thật nhiều để sử dụng nó thành thạo nhé. Chúc các bạn thành công !!!

Câu hỏi thường gặp liên quan:

Cùng chuyên mục:

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

Top