【杭电】[1872]稳定排序

这里写图片描述
这里写图片描述
这里写图片描述

对结构体排序
然后与输入进行比较

判断排序是否完全相同
不稳定是指分数正确但是名字排序不对
需要注意当分数相同时
正确的排序应是先输入的排在前面
所以可以记录一下输入标号

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node {
    char s[55];
    int x,id;
} a[320],b[320];
bool cmp(node A,node B) {
    if(A.x==B.x)
        return A.id<B.id;
//      return strcmp(A.s,B.s)<0;
    else
        return A.x>B.x;
}
int main() {
    int n;
    while(scanf("%d",&n)!=EOF) {
        for(int i=0; i<n; i++) {
            scanf("%s %d",&a[i].s,&a[i].x);
            a[i].id=i;
        }
        sort(a,a+n,cmp);
        int flag=0;
        for(int i=0; i<n; i++) {
            scanf("%s %d",&b[i].s,&b[i].x);
            b[i].id=0;
            if(flag<2) {
                if(strcmp(a[i].s,b[i].s)!=0)
                    flag=1;
                if(b[i].x!=a[i].x)
                    flag=2;
            }
        }
        if(flag==0)
            printf("Right
");
        else {
            if(flag==1)
                printf("Not Stable
");
            else if(flag==2)
                printf("Error
");
            for(int i=0; i<n; i++)
                printf("%s %d
",a[i].s,a[i].x);
        }
    }
    return 0;
}

题目地址:【杭电】[1872]稳定排序

原文地址:https://www.cnblogs.com/BoilTask/p/12569570.html