快速排序qsort的使用

2021-05-23 05:30:16 字數 940 閱讀 5482

表頭檔案  #include

定義函式  void qsort(void * base,size_t nmemb,size_t size,int ( * compar)(const void *, const void *));

函式說明 

引數base指向欲排序的陣列開頭位址,引數nmemb代表陣列中的元素數量,

每一元素的大小則由引數size決定,最後一項引數compar為一函式指標,

這個函式用來判斷兩個元素間的大小關係,

若傳給compar的第乙個引數所指的元素資料大於第二個引數所指的元素資料則必須回傳大於零的值,

兩個元素資料相等則回傳0。

比較函式:

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

其中a和b是陣列中的兩個元素,大小為size。

例如,對整數陣列int a[n]排序,則可以:

qsort(a, n, sizeof(int), cmpint);

如果是結構體陣列test a[n],則可以:

qsort(a, n, sizeof(test), cmp);

其中,typedef struct

int a;

char b;

char c[8];

double d;

}test;

比較函式則可以這樣寫:

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

// 強制型別轉換

test *m = (test *)a;

test *n = (test *)b;

// 比較

return m->a - n->a;或

return m->b - n->b;或

return strcmp(m->c, n->c);或

return m->d - n->d;

qsort 快速排序

qsort函式是ansi c標準中提供的,其宣告在stdlib.h檔案中,是根據二分法寫的,其時間複雜度為n log n 其結構為 void qsort void base,size t nelem,size t width,int comp const void const void 其中 bas...

qsort 快速排序

cpp view plain copy print?void qsort void base,size t nmemb,size t size,int compare const void const void 函式原型在中找到 html view plain copy print?base 指向陣...

qsort快速排序

函式原型 void qsort void base size t num,size t width,int cdecl compare const void const void 標頭檔案 stdlib.h size t num 陣列中待排序元素的數量 size t width 各元素占用空間大小 ...