注意:STL中的稳定和不稳定sort

成绩排序

http://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1

题解
坑点:

  • 1、多组输入测试,写单组的过不了
  • 2、需要稳定pai
  • 自带的sort是非稳定排序,题目要求是稳定排序
  • sort在数据量多的话是不稳定排序,stable_sort是稳定排序

01.无法AC的代码『sort』

#include<bits/stdc++.h>
using namespace std;

struct node
{
    string name;
    int val;
};

//升序
bool one(node a, node b)
{
    return a.val<b.val;
}

bool zero(node a, node b)
{
    return a.val>b.val;
}





int main()
{
    int n;
    int select;
    while(cin>>n>>select)
    {
            vector<node> solve(n);
            for(int i=0; i<n; ++i)
            {
                cin>> solve[i].name >> solve[i].val;
            }

            if( 0==select )
            {
                sort( solve.begin(), solve.end(), zero );
            }
            else if( 1==select )
            {
                sort( solve.begin(), solve.end(), one );
            }
        //cout<<"n==="<<n<<endl;
            for(int i=0; i<n; ++i)
            {
                cout << solve[i].name << " " << solve[i].val << endl;
            }

        }
    return 0;
}

02.AC的代码『stable_sort』

  • 用的stable_sort
#include<bits/stdc++.h>
using namespace std;

struct node
{
    string name;
    int val;
};

//升序
bool one(node a, node b)
{
    return a.val<b.val;
}

bool zero(node a, node b)
{
    return a.val>b.val;
}





int main()
{
    int n;
    int select;
    while(cin>>n>>select)
    {
            vector<node> solve(n);
            for(int i=0; i<n; ++i)
            {
                cin>> solve[i].name >> solve[i].val;
            }

            if( 0==select )
            {
                stable_sort( solve.begin(), solve.end(), zero );
            }
            else if( 1==select )
            {
                stable_sort( solve.begin(), solve.end(), one );
            }
        //cout<<"n==="<<n<<endl;
            for(int i=0; i<n; ++i)
            {
                cout << solve[i].name << " " << solve[i].val << endl;
            }

        }
    return 0;
}
二次训练STL 文章被收录于专栏

这是一个分类专栏,仅做快速记录

全部评论

相关推荐

我是小红是我:学校换成中南
点赞 评论 收藏
分享
10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务