使用qsort函式排序各種型別的資料

2021-09-29 05:32:53 字數 1909 閱讀 4145

今天我們介紹一下qsort函式,qsort是編譯器函式庫自帶的快速排序函式。

使用qsort()排序並用 bsearch()搜尋是乙個比較常用的組合,使用方便快捷。

qsort 的函式原型是

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

各引數:1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元素的占用空間大小 4 指向函式的指標 其中base是排序的乙個集合陣列,num是這個陣列元素的個數,width是乙個元素的大小,comp是乙個比較函式。比如:對乙個長為1000的陣列進行排序時,int a[1000]; 那麼base應為a,num應為 1000,width應為 sizeof(int),comp函式隨自己的命名。qsort(a,1000,sizeof(int),comp);23

4intcomp(constvoid*a,constvoid*b)

return*(int*)a-*(int*)b;

comp 函式編寫作用是由小到大排序,這裡只是需要comp函式返回正值、負值或者零即可。

#define _crt_secure_no_warnings 1

#include

#include

#include

#include

intcmp1

(const

void * a, const

void * b)

intcmp2

(const

void * a, const

void *b)

void

main

(void)

;char b[

10] = ;

qsort(a,

10,

sizeof(

int), &cmp1);

//對於函式指標(指向函式的指標),直接傳入函式名和函式名進行&

//運算都是可以的,因為在呼叫函式時也是取的函式的位址 所以上下兩種呼叫函式的方式都是可以的

qsort(a, 10, sizeof(int), &cmp1); 這裡就是對陣列a進行排序,之後10代表著需要對a陣列中的十個元素進行排序,第三個sizeof(int)是在排序的時候每次需要操作的位元組,再往後的函式名cmp是對陣列a排序的法則,是正序還是倒序。

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

在排序函式中所有的引數前邊都加了const 為的是防止你在操作過程中對傳入資料無意間發生更改。

在使用qsort函式時需要含有標頭檔案#include

對於其他型別的資料也很簡單的就可以進行替換。

使用qsort函式排序各種型別的資料

qsort是編譯器函式自帶的快速排序函式 qsort的函式原型是 void qsort void base,size t num,size t width,int cdecl compare const void const void 各引數 1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元...

各種型別的轉換

int i 100 long l 2001 float f 300.2 double d 12345.119 char username csdn char temp 200 char buf cstring str variant t v1 bstr t v2 一 其它資料型別轉換為字串 二 字串...

python各種型別轉換

int x base 將x轉換為乙個整數 long x base 將x轉換為乙個長整數 float x 將x轉換到乙個浮點數 complex real imag 建立乙個複數 str x 將物件 x 轉換為字串 repr x 將物件 x 轉換為表示式字串 eval str 用來計算在字串中的有效py...