看板 C_and_CPP 關於我們 聯絡資訊
使用過 C 的 bsearch() 的人,應該都知道它的原型長這樣: void * bsearch (const void * key, const void * base, size_t num, size_t size, int (* comparator) ( const void *, const void * ) ); 意義上還蠻簡單的: 在一個有 num 個元素,每個元素大小為 size 的陣列 base 中,尋找有 key 的元素 在這裡我想要問的問題是有關 comparator 這個東西: 不就是比較兩個 key 值相不相等而已,何必另外多一個 comparator 當作參數? 這實在是想不透啊~~~@@~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.167.77.58
loveme00835:因為丟進去的資料型態是void*, 比較的時候必須要轉回 02/27 13:00
loveme00835:正確的型態作處理, 而且必須提供三種回傳值, 這是你的 02/27 13:01
loveme00835:函數必須做的事, 參考 : http://tinyurl.com/yloh5fq 02/27 13:02
VictorTom:bsearch是binary search, 所以不只單純比較key相等而已. 02/27 13:33
VictorTom:詳情請去看一下binary search的演算法@_@" 02/27 13:33
VictorTom:另外, 它可以用來search任何自定的type, 你不給它 02/27 13:34
VictorTom:compare function, 它也不知道怎麼幫你比較:) 02/27 13:35
DJWS:也許陣列是由大排到小。也許陣列的資料不是基本的變數型態。 02/28 15:02
sunneo:以上推文都可以當作參考 03/01 00:13