跳轉到內容

C 程式設計/stdlib.h/bsearch

來自華夏公益教科書,自由的教科書

C 標準庫 中,bsearch 是一個用於使用 二分搜尋演算法 在排序陣列中搜索物件的函式。[1]

bsearch 是一個通用函式,它可以在任何大小的排序陣列中搜索,其中包含任何型別的物件或指向物件的指標,以及使用任何型別的比較謂詞。但是,通用性是以型別安全為代價的,因為 bsearch 在 void 指標上執行;並且在函式呼叫數量上也很昂貴(因為每次比較都需要呼叫比較謂詞),這些呼叫具有很大的開銷。

void *bsearch(const void *key, const void *base, size_t nmemb, size_t size,
              int (*compare)(const void *, const void *));
// notice nmemb before size, unlike fread and fwrite

bsearch() 函式返回指向陣列中匹配成員的指標,如果未找到匹配項,則返回 NULL。如果陣列具有多個匹配元素,則返回值將是指向這些元素之一的指標。哪個特定的元素未指定。[2]

參考文獻

[編輯 | 編輯原始碼]
  1. ISO/IEC 9899:1999 規範 (PDF). p. 318, § 7.20.5.1.
  2. UNIX 手冊頁:man 3 bsearch
[編輯 | 編輯原始碼]
華夏公益教科書