模板 qsort bsearch應用

2021-09-24 18:11:33 字數 2163 閱讀 4916

(1)qsort:

功 能: 使用快速排序例程進行排序

標頭檔案:stdlib.h

用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));

2 陣列中待排序元素數量

3 各元素的占用空間大小

4 指向函式的指標,用於確定排序的順序

(2)bsearch:

用 法: void *bsearch(const void *key, const void *base, size_t nelem, size_t width, int(*fcmp)(const void *, const *));

引數:第乙個:要查詢的關鍵字。

第二個:要查詢的陣列。

第三個:指定陣列中元素的數目。

第四個:每個元素的長度(以字元為單位)。

第五個:指向比較函式的指標。

功能: 函式用折半查詢法在從陣列元素buf[0]到buf[num-1] 匹配引數key。如果函式compare 的第乙個引數小於第二個引數,返回負值;如果等於返回零值;如果大於返回正值。陣列buf 中的元素應以公升序排列。函式bsearch()的返回值是指向匹配項,如果沒有發現匹配項,返回null

1

struct

step2;

67int cmp(const

void *a,const

void *b)814

15 qsort(steps,n,sizeof

(step),cmp);

16 bsearch(&step,steps,n,sizeof(step),cmp);

其中 step1.x - step2.x 表示公升序排序,反之則降序排序

補充:compare的寫法

七種qsort排序方法

《本文中排序都是採用的從小到大排序》

一、對int型別陣列排序

int num[100];

sample:

int cmp ( const void *a , const void *b )

qsort(num,100,sizeof(num[0]),cmp);

二、對char型別陣列排序(同int型別)

char word[100];

sample:

int cmp( const void *a , const void *b )

qsort(word,100,sizeof(word[0]),cmp);

三、對double型別陣列排序(特別要注意)

double in[100];

int cmp( const void *a , const void *b )

qsort(in,100,sizeof(in[0]),cmp);

四、對結構體一級排序

struct in

s[100]

//按照data的值從小到大將結構體排序,關於結構體內的排序關鍵資料data的型別可以很多種,參考上面的例子寫

int cmp( const void *a ,const void *b)

qsort(s,100,sizeof(s[0]),cmp);

五、對結構體二級排序

struct in

s[100];

//按照x從小到大排序,當x相等時按照y從大到小排序

int cmp( const void *a , const void *b )

qsort(s,100,sizeof(s[0]),cmp);

六、對字串進行排序

struct in

s[100];

//按照結構體中字串str的字典順序排序

int cmp ( const void *a , const void *b )

qsort(s,100,sizeof(s[0]),cmp);

七、計算幾何中求凸包的cmp

int cmp(const void *a,const void *b) //重點cmp函式,把除了1點外的所有點,旋轉角度排序

code:

1

int cmp(const

void *a,const

void *b)

2

C語言標準函式 qsort bsearch

include include include include define size 1000000 int compare int const void a,const void b int compare char const void a,const void b int arr int s...

模板應具有的能力

1.模板引入 include 引入靜態模板片段 macro 引入動態模板片段,巨集本質也是乙個函式,就是傳入變數,編譯出一段模板 2.模板繼承 extends 實現了一次性復用多個模板片段的功能,相當於多個macro。在布局復用上,非常有用,實現了母版頁的功能。例如,有layout.html,子模板...

織夢dedecms模板中if else的應用

在製作dedecms模板時,有時需要使用if else判斷語句,但是dedecms模板中是無法使用使用if語句的,否則會報錯。那麼如何在dedecms模板中使用 if else呢?這就需要我們多走一步,就是宣告一下使用php語句 runphp yes 下面是dedecms模板中 if else的用法...