qsortと構造体の結合応用について


qsortはcの中のソート関数で、自分で比較関数を書くが、まだ簡単だ.
注意すべき点は、構造体のソートが直接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