
- C 標準庫
- C 庫 - 首頁
- C 庫 - <assert.h>
- C 庫 - <complex.h>
- C 庫 - <ctype.h>
- C 庫 - <errno.h>
- C 庫 - <fenv.h>
- C 庫 - <float.h>
- C 庫 - <inttypes.h>
- C 庫 - <iso646.h>
- C 庫 - <limits.h>
- C 庫 - <locale.h>
- C 庫 - <math.h>
- C 庫 - <setjmp.h>
- C 庫 - <signal.h>
- C 庫 - <stdalign.h>
- C 庫 - <stdarg.h>
- C 庫 - <stdbool.h>
- C 庫 - <stddef.h>
- C 庫 - <stdio.h>
- C 庫 - <stdlib.h>
- C 庫 - <string.h>
- C 庫 - <tgmath.h>
- C 庫 - <time.h>
- C 庫 - <wctype.h>
- C 標準庫資源
- C 庫 - 快速指南
- C 庫 - 有用資源
- C 庫 - 討論
- C 程式設計資源
- C 程式設計 - 教程
- C - 有用資源
C 庫 - bsearch() 函式
C 的stdlib 庫 bsearch() 函式對已排序的陣列執行二分查詢。它用於在陣列中查詢特定元素。此函式搜尋由 base 指向的 n 個物件的陣列。它查詢與 key 指向的物件匹配的元素。
二分查詢是一種搜尋演算法,用於在已排序的陣列中查詢目標值的位置。
語法
以下是 bsearch() 函式的 C 庫語法:
void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))
引數
此函式接受以下引數:
key - 它表示需要搜尋的元素的指標。
base - 它表示陣列第一個元素的指標。
nitems - 它表示陣列中的元素數量。
size - 它表示陣列中每個元素的大小。
compare - 它表示一個比較兩個元素的函式。
返回值
此函式返回指向陣列中匹配元素的指標。否則,它返回 NULL 指標。
示例 1
在此示例中,我們建立一個基本的 C 程式來演示 bsearch() 函式的使用。
#include <stdio.h> #include <stdlib.h> int compare(const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } // main function int main () { int values[] = { 5, 20, 10, 30, 40 }; int *item; int key = 30; /* using bsearch() to find value 30 in the array */ item = (int*) bsearch (&key, values, 5, sizeof (int), compare); if( item != NULL ) { printf("Found item = %d\n", *item); } else { printf("Item = %d could not be found\n", *item); } return(0); }
輸出
以下是輸出:
Found item = 30
示例 2
下面的 C 程式使用 bsearch() 函式在已排序的陣列中搜索字元。
#include <stdio.h> #include <stdlib.h> // Comparison function int comfunc(const void* a, const void* b) { return (*(char*)a - *(char*)b); } // main function int main() { // sorted array char arr[] = {'a', 'b', 'c', 'd', 'e'}; int n = sizeof(arr) / sizeof(arr[0]); // searching key char key = 'c'; // using bsearch() char* item = (char*)bsearch(&key, arr, n, sizeof(char), comfunc); // If the key is found, print its value and index if (item != NULL) { printf("'%c' Found at index %ld\n", *item, item - arr); } else { printf("Character '%c' is not found\n", key); } return 0; }
輸出
以下是輸出:
'c' Found at index 2
示例 3
以下是一個示例,我們建立了一個 C 程式來使用 bsearch() 函式在已排序的陣列中搜索字串。
#include <stdio.h> #include <stdlib.h> #include <string.h> // Comparison function int comfunc(const void* a, const void* b) { return strcmp(*(const char**)a, *(const char**)b); } // main function int main() { // Sorted array of strings const char* arr[] = {"Aman", "Shriansh", "Tapas", "Vivek"}; int n = sizeof(arr) / sizeof(arr[0]); // Searching key const char* key = "Aman"; // Using bsearch() const char** item; item = (const char**)bsearch(&key, arr, n, sizeof(const char*), comfunc); // If the key is found, print its value and index if (item != NULL) { printf("'%s' Found at index %ld\n", *item, item - arr); } else { printf("Name '%s' is not found\n", key); } return 0; }
輸出
以下是輸出:
'Aman' Found at index 0
廣告