天天看點

觀qsort函數

今天閑着沒事,從倉庫中挖出一份古董看看

觀qsort函數

看到一些之前沒有注意到的東西,比如qsort函數。

百度一下,太巧妙了。之前我研究指針時看到scanf函數,覺得實作它很精妙,這次看到的qsort更上一層樓,不僅是多重指針,也有指針函數。

之前我在譚老師的書上看到一個例子,使用指針函數實作對複雜計算的複用。

我曾經看到過有個牛人利用指針實作oo的一些基本功能,甚至是配合宏實作編譯之前的所有特性。當然對于oo運作時指定的特性是沒有機會了。。。

回頭說這個函數雖然簡陋一點,但是實作排序挺簡單的,友善用于要求不高的場合,或者是對其進行二次開發,比如整體采用堆排序,局部采用它等等。

例子之類的可以看我的前一條文章,qsort函數使用手冊。

還有一個比較基本的查找函數:

bsearch 文法: #include <stdlib.h> void *bsearch( const void *key, const void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) ); 功能: 函數用折半查找法在從數組元素buf[0]到buf[num-1] 比對參數key。如果函數compare 的第一個參數小于第二個參數,傳回負值;如果等于傳回零值;如果大于傳回正值。數組buf 中的元素應以升序排列。函數bsearch()的傳回值是指向比對項,如果沒有發現比對項,傳回null。

基本一樣,也是友善擴充。

相比c++的那些強悍的庫,這兩個的确比較菜,但是我想大多數人都會忽略它們。假如你的程式,不是要求非常高的。。。

就這些啦。主要是廢話。。。

繼續閱讀