前些天很意外地得知學校程式設計居然是教 C語言,非工程相關應該不需要學到這種中階語言才對吧…… 好歹來個 C++ 啊 !!!!
抱怨歸抱怨,課還是得上,只好重新翻閱C的標準函式庫複習一下,結果在裡面挖到很多好用的東西呢XD 其中 stdlib.h 的 qsort 函式我覺得最驚喜,我一直以為只有 C++ 的 STL library才有 sort(),沒想到C語言也有! 不過用法有點複雜,紀錄一下。
Function Prototype
void qsort(void* base, size_t n, size_t size, int (cmp)(const void, const void*))
- base 是被排序陣列的指標
- n 是被排序陣列的大小 = sizeof(array)/sizeof(array_type)
- size 是陣列中元素的大小 = sizeof(array_type)
- 最後是指向比較函數的指標
指向比較函數的指標比較特別,就像 STL sort 如果要改變排序方向的話必須傳入第三個參數,自行定義的比較函數。
範例如下:
|
|
傳入 a,b 兩參數型別是 void ,需要強制轉型成被排序陣列的型別,如範例中 a,b 先被強制轉型成整數指標 (int),再對他取值做處理。
完整範例
|
|
輸出結果: