C語言標準庫函式qsort排序的介紹與使用

2021-08-09 22:56:15 字數 1746 閱讀 6955

qsort函式包含在的標頭檔案裡。

qsort函式宣告如下:

void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));

引數說明如下:

base: 要排序的陣列

nmemb: 陣列中的元素數目

size: 每個陣列元素占用記憶體空間,可使用sizeof獲得

compar: 比較兩個陣列元素的比較函式。本比較函式的第乙個引數值小於、等於、大於第二引數值時,本比較函式的返回值應分別小於、等於、大於零。

也就說你要實現乙個這樣的函式(公升序):

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

如果a > b,返回》0

如果a == b, 返回0

如果a < b,返回<0

這裡的a和b的關係僅僅是邏輯上的,並不是值比較,所以排序的可以不僅僅是數字,還可以是字元。

< 以下排序都是採用的從小到大排序》

一、對int型別陣列排序

int num[100];

sample:

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

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

對乙個二維陣列的進行排序:

int a[1000][2]; 其中按照a[0]的大小進行乙個整體的排序,其中a[1]必須和a[0]一起移動交換。

qsort(a,1000,sizeof(int)*2,comp);

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

二、對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 ins[100]

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

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

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

五、對結構體二級排序

struct ins[100];

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

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

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

六、對字串進行排序

struct ins[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點外的所有點,旋轉角度排序

標準庫函式qsort排序

qsort函式包含在的標頭檔案裡。qsort函式宣告如下 void qsort void base,size t nmemb,size t size,int compar const void const void 引數說明如下 base 要排序的陣列 nmemb 陣列中的元素數目 size 每個陣...

C語言標準庫函式qsort詳解

功 能 使用快速排序例程進行排序 標頭檔案 stdlib.h 用 法 void qsort void base,int nelem,int width,int fcmp const void const void 引數 1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元素的占用空間大小 4 指...

C 中標準庫函式 qsort 的用法

一 c語言函式庫 對qsort的說明 p110 qsort 快速排序函式 函式原型 void qsort void base,int nelem,int width,int fcmp const void const 標頭檔案 include 是否是標準函式 是 函式功能 對記錄 進行從小到大的快速...