包含在標頭檔案
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...