まず、クイックソートを使った基本系


#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


戻る