void qsort (void* base, size_t num, size_t size,
int (*compar)(const void*,const void*));
其中,base是要排序的陣列,num是陣列的元素個數,size是每個元素的大小(占多少byte)
compar是比較的函式,要利用函式指標傳進去。
int compar(const void *p1, const void *p2);
其中compar函式若回傳:
小於零之數,則代表*p1應該排在*p2前面。
等於零之數,代表兩者相等。
大於零之數,代表*p1應該排在*p2後面。
以下提供一個簡單範例供參考
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int bigger(const void *a, const void *b);
int main(void)
{
srand(time(NULL));
int list[20];
for (int i = 0; i < 20; ++i) {
list[i] = rand();
printf("%d\n", list[i]);
}
puts("SORT....................................");
qsort(list, 20, 4, bigger);
for (int i = 0; i < 20; ++i) {
printf("%d\n", list[i]);
}
return 0;
}
int bigger(const void *a, const void *b)
{
return *(int *)a >= *(int *)b ? *(int *)a > *(int *)b : -1;
}
👉【幫我們一個忙!】👈
👋如果您喜歡這篇文章,請在下方按5個Like!
❤您的支持是我們最大的動力!
您只要登入帳號(Facebook、Google),在下方按5個Like,我們就會收到來自LikeCoin基金會的贊助。
您只需要支持我們,完全不會花到錢!