之前在寫程式的時候,無論是查詢還是排序基本上都是自己寫程式,很少或者說從來沒有用過c語言中的庫函式來搞定這種問題,今天看書發現c語言其實把這種問題已經解決了,我們需要做的就是呼叫這樣的函式就可以了
對於查詢的資料我們使用
void *bsearch(const void *key,const void *base,size_t num,
size_t width,int (*cmp)(const void *v1,const void *v2));
上面的那個函式
其中key指向需要查詢的那個元素,base是查詢資料來源(陣列)的第乙個元素,num指出陣列包含的元素數,width指的是每個元素的寬度,cmp函式是比較函式
比較函式cmp必須滿足兩個要求
1、接受兩個指向資料項的指標作為引數
2、返回這樣的乙個int值
a、如果元素1《元素2,則小於0
b、如果元素1=元素2,則等於0
c、如果元素1>元素2,則大於0
進行排序的的庫函式qsort
void qsort(void *base,size_t num,size_t size,
int (*cmp)(const void *element1,const void *element2));
和上面的引數基本上的意義相當
例子:排序演算法
//#define ndebug
#include #include #include #include #include #include int intcmp(const void *v1,const void *v2);
int main()
{ srand(time(0));
int max_number;
printf("please input a number:\n");
scanf("%d",&max_number);
assert(max_number>0);
int *a = (int *)malloc(sizeof(int)*max_number);
for (int i=0;i
這個必須是基於第乙個排序完成,因為這個庫函式要求,所要查詢的陣列必須是公升序排列好的,因為是二分查詢,二分查詢要求查詢的資料必須是有序的。
//#define ndebug
#include #include #include #include #include #include int intcmp(const void *v1,const void *v2);
int main()
{ srand(time(0));
int max_number;
printf("please input a number:\n");
scanf("%d",&max_number);
assert(max_number>0);
int *a = (int *)malloc(sizeof(int)*max_number);
for (int i=0;i
c語言庫函式
1 asll可現實字元 include library.h u8 lib int2string u32 number,u8 char s char s i 0 for j 0 j i 2 j return i description 初始化記憶體函式,以位元組為單位 param in pdst 目標...
C語言庫函式
定義 庫函式 顧名思義是把函式放到庫里,是別人 或組織 把一些常用到的函式編完放到乙個檔案裡,供程式設計人使用,程式設計人用的時候把它所在的檔名用 include 加到裡面就可以了 尖括號內填寫檔名 例如 include。簡介 c語言是一種非常優秀的程式設計的入門語言。它比其他大部分語言都簡潔易學,...
C語言 系統函式和庫函式的區別
系統呼叫 是作業系統為使用者態執行的程序和硬體裝置 如cpu 磁碟 印表機等 進行互動提供的一組介面,即就是設定在應用程式和硬體裝置之間的乙個介面層。可以說是作業系統留給使用者程式的乙個介面。再來說一下,linux核心是單核心,結構緊湊,執行速度快,各個模組之間是直接呼叫的關係。放眼望整個linux...