C語言 qsort 解析

2021-09-24 21:06:10 字數 2405 閱讀 7942

包含標頭檔案為stdlib.h

void qsort(void*base, size_t num, size_t width, int( * compare)(const void*,const void*))

各引數:

待排序陣列首位址

陣列中待排序元素數量

各元素的占用空間大小

指向函式的指標,用於確定排序的順序,記住傳入的是位址!!!

compare( (void *) & elem1, (void *) & elem2)

compare函式的返回值

描述<0

elem1將被排在elem2之前

=0位置不變

>0

elem1將被排在elem2之後

公升序還是降序取決於返回值的正負

// 由小到大排序

intcomp

(const

void

*a,const

void

*b)// 由大到小排序

intcomp

(const

void

*a,const

void

*b)

對一維陣列的排序例項(從小到大排序):

#include

#include

intcomp

(const

void

*a,const

void

*b)int

main()

qsort

(array, n,

sizeof

(int

),comp)

;for

(i=0

;i)return0;

}

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

int a[1000][2];其中按照a[0]的大小進行乙個整體的排序,其中a[1]必須和a[0]一起移動交換。//即第一行和第二行(a[0]a[1]分別代表第一行和第二行的首位址)。使用庫函式排序的**量並不比用氣泡排序法小,但速度卻快很多。

qsort

(a,1000

,sizeof

(int)*

2, comp)

;int

comp

(const

void

*a,const

void

*b)

對字串進行排序 :

int

comp

(const

void

*p1,

const

void

*p2)

intmain()

按結構體中某個關鍵字排序(對結構體一級排序):

struct node s[

100]

;int

comp

(const

void

*p1,

const

void

*p2)

qsort

(s,100

,sizeof

(s[0])

,comp)

;

按結構體中多個關鍵字排序(對結構體多級排序)[以二級為例] :

struct node s[

100]

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

intcomp

(const

void

*p1,

const

void

*p2)

對結構體中字串進行排序 :

struct node s[

100]

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

intcomp

(const

void

*p1,

const

void

*p2)

qsort

(s,100

,sizeof

(s[0])

, comp)

;

計算幾何中求凸包的comp :

int

comp

(const

void

*p1,

const

void

*p2)

C語言 qsort函式

c程式使用標準庫函式qsort排序整數檔案 include include include include define max 10 int int cmp const void a,const void b int main while feof fp length fclose fp qsor...

C語言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 con...

qsort簡單解析

編譯器函式庫自帶的快速排序函式。使用qsort 排序並用 bsearch 搜尋是乙個比較常用的組合,使用方便快捷。qsort 的函式原型是 void qsort void base,size t num,size t width,int cdecl compare const void const ...