# 排序 Sorting [toc] ## 自定義排序qsort - `qsort()`為一個C內建的排序函式,定義在`stdlib.h`中 - `void qsort(void* base, size_t n, size_t size, int (*cmp)(const void*, const void*))` - base:為指向陣列第一個元素的指標 - n:陣列的大小 - size:每個元素的位元大小(可以用`sizeof()`) - cmp:自定義比較函式,回傳值為正的話則交換 ::: success :bulb:簡單的說,如果想要按照A這種方法排序,則在cmp函數中,遇到非A的狀況時需回傳`true`(正值)。 ::: ### Example.1:由小排到大 ```c int cmp(const void* a, const void* b) { int A = *(int*)a; int B = *(int*)b; if( A == B ) return 0; else return (A<B) ? -1 : 1; } ``` 或者更短一點: ```c //要小心overflow,ex:-2147483648-1 int cmp(const void* a, const void* b) { return (*(int*)a - *(int*)b); } ``` ### Example.2:Sort!Sort!!and Sort!!!