C學習 快排函式qsort使用小結

2021-10-09 10:17:31 字數 2264 閱讀 7744

包含在標頭檔案
void

qsort

(void

*base,

size_t nmemb,

size_t size,

int(

*compar)

(const

void*,

const

void*)

)

引數說明:

附帶函式:compar

該函式通常是自定義的,名字自取,格式如下:

int

compar

(const

void

*a,const

void

*b)

- 若 a > b,返回 >

0- 若 a == b,返回 0

- 若 a < b,返回 <

0

例一:陣列比值

#

define

numsize

5int a[numsize]=;

intcmp

(const

void

* a,

const

void

*b)qsort

(a, numsize,

sizeof

(int

), cmp)

;//執行後,陣列a被公升序排列

例二:二維陣列比值排序

int a[

1000][

50];// 其中按照a[i][2],第2列的資料大小作為排序依據,其中a[i][0]必須和a[i][49]一起,與其他行移動交換。

intcomp

(const

void

*a,const

void

*b)// 以a為起始位址指標,根據compare結果決定起始位置往後sizeof(int)*2這一整塊拷貝交換,也即整行交換

qsort

(a,1000

,sizeof

(int)*

50,comp)

;

例三:結構體比值

// @example.c

#include

//for qsort function

struct

objnums

;static

intcmp

(const

void

* a,

const

void

* b)

//比較入參

void

main()

以leetcode的twosum題的應用為例:

struct

objnums

;static

intcmp

(const

void

* a,

const

void

* b)

//比較入參

int*

twosum

(int

* nums,

int numssize,

int target,

int* returnsize)

qsort

(sortednums, numssize,

sizeof

(*sortednums)

, cmp)

;// 排序,由小到大

i =0;

j = numssize -1;

while

(i < j)

else

if(sortednums[i]

.val + sortednums[j]

.val > target)

else

}free

(sortednums)

;return ret;

}

注意事項

重要! c語言的快排函式qsort()

c語言快排函式qsort()

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

C語言快排函式qsort

原本以為c語言中的快排函式都要靠自己去實現,今天才知道,原來qsort就是c語言中的快排函式,包含在stdlib.h標頭檔案中,函式一共有四個引數,沒有返回值。int cmp const void const void qsort s,n,sizeof s 0 cmp 其中第乙個引數s是乙個位址,即...

qsort 快排函式(C語言)

void qsort void base,size t nitems,size t size,int compar const void const void includenitems 陣列中元素的個數。size 陣列每個元素的大小 以位元組為單位 compar 比較函式。引數是乙個指標,指向比較...

c語言之qsort(快排)

1.先看函式原型 void qsort void base,size t nitems,size t size,int compar const void const void 引數描述 1.1.base 指向要排序的陣列的第乙個元素的指標。2.nitems 由 base 指向的陣列中元素的個數。3...