排序

现有结构体:struct Person { string name; int age; };要求按照指定要求对Person进行排序。
输入:第一行为两个整数,第一个整数n表示总共有n个person,第二个整数为0或1,若为0,则表示按人名进行排序,若为1,则表示按年龄进行排序。接下来n行输入数据分别表示n个人的姓名和年龄。
6 0
xue 25
qiu 24
zhang 26
li 23
zheng 28
wang 20

#include <iostream>
#include <algorithm>
using namespace std;

struct Person
{
    string name;
    int age;
};

方法1:

int main()
{ 
    int n, m;
    while (cin>>n>>m)
    {
        Person *p = new Person[n];
        for (int i = 0; i < n; i++)
        {
            cin>>p[i].name;
            cin>>p[i].age;
        }

        for (int i = 0; i < n - 1; i++)
        {
            int k = i;
            for (int j = i + 1; j < n; j++)
            {
                if (m == 0 && p[j].name.compare(p[k].name) < 0)
                {
                    k = j;
                }
                else if (m == 1 && p[j].age < p[k].age)
                {
                    k = j;
                }
            }

            if (k != i)
            {
                swap(p[k], p[i]);
            }
        }

        for (int i = 0; i < n; i++)
        {
            cout<<p[i].name<<" "<<p[i].age<<endl;
        }
    }
    return 0;
   }

方法2:

bool compareName(Person p1, Person p2)
{
    return p1.name.compare(p2.name) < 0;
}

bool compareAge(Person p1, Person p2)
{
    return p1.age < p2.age;
}

int main()
{
    int n, m;
    while (cin>>n>>m)
    {
        Person *p = new Person[n];
        for (int i = 0; i < n; i++)
        {
            cin>>p[i].name;
            cin>>p[i].age;
        }

        if (m == 0)
        {
            sort(p, p + n, compareName); //使用标注库函数 #include<algorithm>
        }
        else
        {
            sort(p, p + n, compareAge); //使用标注库函数 #include<algorithm>
        }

        for (int i = 0; i < n; i++)
        {
            cout<<p[i].name<<" "<<p[i].age<<endl;
        }
    }

    return 0;
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_25873421/article/details/49934879
文章标签: struct sort
个人分类: C++
上一篇Fibonacci数列、判断回文字符串
下一篇对象与指针的转换
想对作者说点什么? 我来说一句

softable排序排序

2010年08月15日 2KB 下载

排序完全排序完全排序完全

2008年11月18日 134KB 下载

php排序php排序php排序php排序

2011年01月14日 46KB 下载

包含五种算法排序系统

2011年07月21日 462KB 下载

GridView排序

2009年06月25日 6KB 下载

java排序

2011年10月08日 6KB 下载

格雷码排序

2017年11月27日 343B 下载

汉字数组排序

2018年06月14日 418B 下载

多线程排序win32

2011年09月03日 2.66MB 下载

没有更多推荐了,返回首页

关闭
关闭