冒泡排序
输入几个数,让后从第一个数开始排序,我这里是从大往小排。首先第一个,从所有的数中,从前面开始找,看是否有比它大的,如果有,就调换位置。让后看第二个数,但是这个时候,就不能再从所有的数中找是否有比他大的数了,因为这个时候前面的数可能比它大,但是不能换,所以从它自身开始查找。
#include<stdio.h>
struct A
{
int x;
char y[100];
};
int main()
{
A a[100],t;
for(int i=0; i<5; i++)
{
scanf("%d%s",&a[i].x,a[i].y);
}
for(int i=0; i<5; i++)
{
for(int j=i; j<5; j++) //j=i,而不是0,因为这个时候前面的数可能比它大,但是不能换,所以从它自身开始查找。
{
if(a[i].x<a[j].x) //从所有的数中,从前面开始找,看是否有比它大的
{
t=a[i]; //如果有,就调换位置
a[i]=a[j];
a[j]=t;
}
}
}
for(int i=0; i<5; i++)
{
printf("%s ",a[i].y);
}
printf("\n");
return 0;
}
把y看成name,相当于按照name对分数进行排序。