今天我們介紹一下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...