C語言庫函式中的排序和查詢函式

2021-06-21 11:36:55 字數 1546 閱讀 7030

之前在寫程式的時候,無論是查詢還是排序基本上都是自己寫程式,很少或者說從來沒有用過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...