La recherche et le tri Titre: Entrez (utilisateur, des résultats) séquence peut être obtenue de haut en bas ou de bas grade à ordre élevé, les mêmes résultats sont traités conformément à la règle d'agencement d'entrée précédent.

Trouver et trier

Titre: Entrez (utilisateur, des résultats) séquence peut être obtenue de haut en bas ou de bas grade à ordre élevé, les mêmes résultats
ont été traités conformément à la règle d'agencement d'entrée précédent.

Une description:

Entrez plusieurs lignes, entrez d' abord le numéro que vous voulez trier la personne, puis entrez la méthode de tri 0 (par ordre décroissant) ou 1 (dans l' ordre croissant) ont été retapez leurs noms et leurs réalisations, séparés par un espace.
Séparés par un espace entre la manière déterminée en fonction de la sortie des noms et des partitions, des noms et des scores

Exemple 1:
Entrée

3
0
fang 90
yang 50
ning 70

exportation

fang 90
ning 70
yang 50

le contenu de l'étude: la structure tri

#include <bits/stdc++.h>
using namespace std;
#define MAXSIZE 100000
struct Student
{
    string name;
    double score;
    int index;
};

int cmp2(Student a, Student b)
{//成绩从大到小排序
    if(a.score == b.score)
        return a.index < b.index;
    return a.score < b.score;
}

int cmp1(Student a, Student b)
{//成绩从小到大排序
    if(a.score == b.score)
        return a.index < b.index;
    return a.score > b.score;
}
int main()
{
    int n, m;
    while(scanf("%d %d", &n, &m)!=EOF)
    {
        Student *s = new Student[MAXSIZE];
        for(int i = 0; i < n; i++)
        {
            cin>>s[i].name>>s[i].score;
            s[i].index = i;//录入顺序
        }
        if(m == 0)
            sort(s, s+n, cmp1);
        else
            sort(s, s+n, cmp2);
        for(int i = 0; i < n; i++)
            cout<<s[i].name<<" "<<s[i].score<<endl;
    }
    return 0;
}

Publié 29 articles originaux · louange won 4 · Vues 4685

Je suppose que tu aimes

Origine blog.csdn.net/onion___/article/details/104859088
conseillé
Classement