【書式】
#include <stdlib.h> or <search.h>
void *bsearch(const void *key, const void *base, size_t nmemb,
size_t size, int (*compar)(const void *x, const void *y));
【解説】
bsearch()は2分探索をおこないます。sizeバイトの要素がnmemb 個並んだ配
列 baseの中にあるkeyと等しい要素を探し、そのアドレスを返します。比較
にはcomparが指している関数を用います。
baseが指している配列は昇順にソートされていなければなりません。
comparの指している関数は、2つのポインタ(xとy)を引数として、 次の値を
返さなくてはなりません。
*x > *yの時 正
*x = *yの時 0
*x < *yの時 負
【使用例】
次のプログラムは int型オブジェクトの配列の先頭アドレス(z)と要素数(n)
を使って、配列内のオブジェクトから特定のデータ(key)を捜します。
#include <stdlib.h>
int compare(const void *x, const void *y)
{
return (*(const int *)x - *(const int *)y);
}
void foo(int key, int z[], int n)
{
bsearch(&key, z, n, sizeof(int), compare);
}
【リターン値】
見つかった要素のアドレスを返します。見つからなかったときはNULLを返し
ます。
【可搬性】
ANSI, UNIX, DOS窓
【参照】
qsort(3)
【copyright (c) 安江正樹@東海大学理学部物理学科】