对结构体排序
然后与输入进行比较
判断排序是否完全相同
不稳定是指分数正确但是名字排序不对
需要注意当分数相同时
正确的排序应是先输入的排在前面
所以可以记录一下输入标号
#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]稳定排序