qsortと構造体の結合応用について
qsortはcの中のソート関数で、自分で比較関数を書くが、まだ簡単だ.
注意すべき点は、構造体のソートが直接1つのデータを並べて構造体をソートできるため、作業量が大幅に減少することです.
このようなポインタ構造体コードをサポートしていないコンパイラもありますが、c++でコンパイルするとエラーを減らすことができます.
入力:3 Xiaoming 88 Dayu 79 Qingqing 99
出力:Qingqing 99 Xiaoming 88 Dayu 79
注意すべき点は、構造体のソートが直接1つのデータを並べて構造体をソートできるため、作業量が大幅に減少することです.
このようなポインタ構造体コードをサポートしていないコンパイラもありますが、c++でコンパイルするとエラーを減らすことができます.
#include
#include
struct stu{
char name[10];
int sum;
};//
int comp(const void *p1,const void *p2){
struct stu *c = (struct stu*)p1;
struct stu *d = (struct stu*)p2;
// ,
//
return c->sum - d->sum;// , d->sum - return c->sum
//
}
int main(){
int b;
while(~scanf("%d",&b)){
struct stu a[b+1];
int summ = 0;
for(int i = 0;i < b;i++){
scanf("%s %d",a[i].name,&a[i].sum);
}
qsort(a,b,sizeof(stu),comp);// , , ,
for(int i = 0;i < b;i++){
printf("%s %d
",a[i].name,a[i].sum);
}
}
return 0;
}
入力:3 Xiaoming 88 Dayu 79 Qingqing 99
出力:Qingqing 99 Xiaoming 88 Dayu 79