校oj200——带结构体的分数归并排序+字典序人名

#200:  给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。

时间限制:2 sec.  内存限制:128 MB.

试题描述
给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
输入格式
第一行为n (0 < n < 20),表示班里的学生数目;接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。
输出格式
把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。
样例输入
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
样例输出
Joey 92
Hanmeimei 90 
Kitty 80
Tim 28

#include
#include
#include
typedef struct
{
    char a[50];
    int b;
} r;
r ren[25];
r x[25];
void marge_sort(r *A,int x,int y,r *T)  //x___start,y___end+1//
{
    if(y-x>1)
    {
        int m=(x+y)/2;
        int p=x,q=m,i=x;
        marge_sort(A,x,m,T);
        marge_sort(A,m,y,T);
        while(p=y||(pA[q].b))T[i++]=A[p++];		///同分判断
            else if(p0)T[i++]=A[q++];
                else T[i++]=A[p++];
            }
            else T[i++]=A[q++];
        }
        for(i=x; i0)
                {
                    tst = pst[n];
                    pst[n] = pst[n+1];
                    pst[n+1] = tst;
                }
            }
    }
}
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        for(int i=0; i

你可能感兴趣的:(校oj200——带结构体的分数归并排序+字典序人名)