
■qsort第1引数 ソート対象の配列
int 配列[] = { 3,1,4,1,5,9,2,6,5,3 };
■qsort第2引数 配列の要素数
size_t 要素数 = sizeof(配列) / sizeof(配列[0]) ;
■qsort第3引数 配列1個のサイズ
■qsort第4引数 比較関数
int 比較関数(const void *p1, const void *p2) {
int n1 = *(const int *)p1;
int n2 = *(const int *)p2;
return n1 - n2;
}
■コンパイル可能なqsort使用例
#include <stdio.h>
#include <stdlib.h>
int 比較関数(const void *p1, const void *p2) {
int n1 = *(const int *)p1;
int n2 = *(const int *)p2;
return n1 - n2;
}
//整数ソート
int main(void){
int 配列[] = { 3,1,4,1,5,9,2,6,5,3 };
size_t 要素数 = sizeof(配列) / sizeof(配列[0]) ;
for (size_t i = 0 ; i < 要素数 ; i++){
printf("ソート前:%d\n", 配列[i]);
}
qsort(配列,要素数,sizeof(配列[0]),比較関数);
for (size_t i = 0 ; i < 要素数 ; i++){
printf("ソート後:%d\n", 配列[i]);
}
}
n1 – n2の引き算の結果で
数値順にソートします。
■qsort実行結果
./a.out
ソート前:3
ソート前:1
ソート前:4
ソート前:1
ソート前:5
ソート前:9
ソート前:2
ソート前:6
ソート前:5
ソート前:3
ソート後:1
ソート後:1
ソート後:2
ソート後:3
ソート後:3
ソート後:4
ソート後:5
ソート後:5
ソート後:6
ソート後:9