冒泡排序

#include <stdio.h>

typedef struct student{
	char name[20];
	char  score;
}s;

int main(){
	int i, c, j;
	printf("请输入需要排序的学生个数:");
	scanf("%d",&c);
	s st[100],t;
	for(i = 0; i < c; i++){
		scanf("%s %d",&st[i].name,&st[i].score);	
	}

	for(i = 0; i < c; i++){
	printf("%s %d",st[i].name,st[i].score);
	printf("\n");
	}
	printf("冒泡排序完后的结果:\n"); 
	for(i = 0; i < c-1; i++){   //n个数字只要n-1趟比较就可以了,1趟过后有一个数字归位,到最小或者最大
		for(j = 0; j < c-i; j++){  //在第i趟当中,比较的次数只要c-i次就可以了,每一趟过后,后面的数字就不需要交换了
  		if(st[j].score < st[j+1].score){
		  	t = st[j];  //整个结构体进行交换
		  	st[j] = st[j+1];
		  	st[j+1] = t;
		}
  	}
	}
	for(i = 0; i < c; i++){
	printf("%s %d",st[i].name,st[i].score);
	printf("\n");
	}

	return 0;
} 

你可能感兴趣的:(冒泡排序)