使用qsort()进行稳定排序?

使用qsort()进行稳定排序?,第1张

使用qsort()进行稳定排序

最后,我错过了描述中的一行:

输入包括多个测试用例。在每个测试用例中,第一行包含一个整数N。

经过几种方法,我通过以下代码通过了它:

class People{    public:        char name[11];        int grade;        int order;        void print(){ printf("%s %dn", name, grade);        }};int compar(const void *a, const void *b){    People *A = (People*)a;    People *B = (People*)b;    if(A->grade > B->grade) return 1;    else if(A->grade < B->grade) return -1;    else if(A->order > B->order) return 1;    else if(A->order < B->order) return -1;    return 0;}int main(){    int n;    while(scanf("%d", &n)!=EOF){        People *p = new People[n];        for(int i=0;i<n;i++){ scanf("%s %d", p[i].name, &p[i].grade); p[i].order = i;        }        qsort(p, n, sizeof(People), compar);        for(int i=0;i<n;i++){ p[i].print();        }        delete[] p;    }}

std :: stable_sort正常工作,但是,它收到TLE(超过时间限制),并且cin / cout也导致TLE。这就是我坚持使用printf /
scanf的原因。

感谢大家回答这个问题!:)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5615389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存