bsearch - データの探索

【書式】

#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) 安江正樹@東海大学理学部物理学科】