61章 標準ソート関数 qsort
http://www.geocities.jp/ky_webid/c/061.html
qsort(対象配列,配列全体のサイズ,一要素のサイズ,ソート関数ポインタ)
このような定義になっている。
第四引数に渡す関数ポインタは
int 関数名(const void*, const void*);
となっている。
strcmpと同じで正、負、0のいずれかを返すような処理にすればよいということになる。
実際に使ってみる。
#include <stdio.h> #include <stdlib.h> #define ARRAYNUM(a) (sizeof(a)/sizeof(a[0])) int cmpint (const void *a, const void *b) { return *(int *)a - *(int *)b; } int main (void) { int num[] = {4,7,1,9,6,5,2}; int i; qsort(num,ARRAYNUM(num),sizeof(int),cmpint); for(i=0;i<ARRAYNUM(num);++i) { printf("%d ",num[i]); } return 0; }
$ main 1 2 4 5 6 7 9
ちなみにaとbの引き算を逆にすれば逆順にソートされます。