【C言語】
qsortで整数配列を並び替える


■第1引数 ソート対象の配列

int     配列[] = {  3,1,4,1,5,9,2,6,5,3  };  

■第2引数 配列の要素数

size_t 	要素数 = sizeof(配列) / sizeof(配列[0]) ;

■第3引数 配列1個のサイズ

sizeof(配列[0])

■第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