Stable_Sort降序

时间:2012-10-01 03:25:33

标签: c++ visual-studio-2010 sorting

我正在为我的大学做一些在线问题。我对排序感到很困惑。我需要按降序打印我的输入,类型为int。但是,如果它们都具有相同的值,我需要按升序打印它们。我得到了这个输出。我真的很困惑这种排序算法,请问有什么想法吗? PS:对不起我的英文。

S 7
T 6
I 5
E 4
O 3
W 2
U 2
N 2
H 2
A 2
Y 1
Q 1
M 1
C 1

我希望这样:

S 7
T 6
I 5
E 4
O 3
A 2
H 2
N 2
U 2
W 2
C 1
M 1
Q 1
Y 1

这是我的代码:

#include "stdafx.h"
#include <stdio.h>
#include <vector>
#include <map>
#include <algorithm>
#include <ctype.h>
using namespace std;

int main() 
{
    freopen("in.txt", "rt",stdin);
    freopen("output.txt", "wt",stdout);
    int lineas,cont;
    map<char,int> mapa;
    char a;
    vector< pair<int,char> > vec;
    scanf("%d\n",&lineas);

    while (lineas && scanf("%c",&a)!=EOF)
    {
        if (a=='\n')
        {
            scanf("\n");
            lineas--;
        }
        else if ( (a>='a' && a<='z') || (a>='A' && a<='Z' ))
        {
            a=toupper(a);
            mapa[a]++;
        }
    }

    map<char,int>::iterator it;
    vec.resize(mapa.size());
    cont=0;
    for (it=mapa.begin();it!=mapa.end();it++)
    {
        vec[cont].second=(*it).first;
        vec[cont].first=(*it).second;
        cont++;
    }

    sort(vec.begin(),vec.end());
    reverse(vec.begin(),vec.end());

    for (int i=0;i<vec.size();i++)
    {
        printf("%c %d\n",vec[i].second,vec[i].first);
    }
    return 0;
}

0 个答案:

没有答案