まず、クイックソートを使った基本系
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 構造体の定義
struct testStruct{
int intA;
char moji[10+1];
};
//ソート比較関数のプロトタイプ宣言
int compare( const void *arg1, const void *arg2 );
int main(int argc, char* argv[])
{
//構造体の配列を宣言
testStruct MyStruct[5];
//データの初期投入
MyStruct[0].intA =5;
strcpy(MyStruct[0].moji,"05");
MyStruct[1].intA =4;
strcpy(MyStruct[1].moji,"04");
MyStruct[2].intA =1;
strcpy(MyStruct[2].moji,"01");
MyStruct[3].intA =3;
strcpy(MyStruct[3].moji ,"03");
MyStruct[4].intA =2;
strcpy(MyStruct[4].moji,"02");
//* クイック ソートのアルゴリズムを使って、残りの引数をソートします。
// qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );
qsort( MyStruct, 5, sizeof( testStruct ), compare );
for (int i=0 ; i < 5 ; i++){
printf("MyStruct[%d]=%s\n",i,MyStruct[i].moji);
}
return 0;
}
//比較用関数の実体
int compare( const void *arg1, const void *arg2 ){
int rtn;
rtn = ((testStruct*)arg1)->intA - ((testStruct*)arg2)->intA;
return rtn;
}
;
実行結果
MyStruct[0]=01
MyStruct[1]=02
MyStruct[2]=03
MyStruct[3]=04
MyStruct[4]=05