2019年5月20日 星期一

【C語言】qsort排序

要利用標準C函式庫,可以參考這個prototype
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基金會的贊助。
您只需要支持我們,完全不會花到錢!