新手疑问 学号排序总是错 无论怎么改都有几个点错

P1093 [NOIP2007 普及组] 奖学金

Mei_Misaki @ 2020-12-03 16:39:48

学号排序很诡异\ 不管怎么搞都一样\ 改大改小都不可以\ 望各位大佬给我指点指点

#include<bits/stdc++.h> 
using namespace std; 
struct ch{
    int zong,xue,yv; 
}; 
ch a[1000]; 
int main(){
    int n; 
    cin>>n; 
    for(int i=0;i<n;i++){
        int yv,shu,ying; 
        cin>>yv>>shu>>ying; 
        a[i].yv=yv; 
        a[i].xue=i+1; 
        a[i].zong=yv+shu+ying;
    }
    for(int i=n-1;i>0;i--){
        for(int j=0;j<i;j++){
            if(a[j].zong<a[j+1].zong){
                swap(a[j],a[j+1]);
            } 
            else if(a[j].zong==a[j+1].zong){
                if(a[j].yv<a[j+1].yv){
                    swap(a[j],a[j+1]);
                } 
                else if(a[j].yv==a[j].yv){
                    if(a[j].xue>a[j+1].xue){
                        swap(a[j],a[j+1]);
                    }
                }
            }
        }
    }
    for(int i=0;i<5;i++){
        cout<<a[i].xue<<' '<<a[i].zong<<endl;
    }
    return 0;
}

by No_wonder @ 2020-12-03 16:45:16

快排我还能看懂,为什么要冒泡泡呢


|