成绩排序
成绩排序
http://www.nowcoder.com/questionTerminal/8e400fd9905747e4acc2aeed7240978b
冒泡排序法具有稳定性
#include <iostream> #include <vector> using namespace std; struct Student { string name; unsigned score; Student(string str, unsigned sig):name(str),score(sig) { } }; void bubleSort(vector<Student>& vec, bool flag) { bool isOrder = true; for(unsigned i = 0; i < vec.size() - 1; ++i) { isOrder = true; for(unsigned j = 0; j < vec.size() - 1 - i; ++j) { if(flag)//1从小到大 { if(vec[j].score > vec[j + 1].score) { swap(vec[j], vec[j + 1]); isOrder = false; } } else { if(vec[j].score < vec[j + 1].score) { swap(vec[j], vec[j + 1]); isOrder = false; } } } if(isOrder) break; } } int main() { unsigned n = 0, flag = 0, score = 0; string name; vector<Student> vec; while(cin >> n >> flag) { while(n--) { cin >> name >> score; Student stu(name, score); vec.push_back(stu); } bubleSort(vec, flag); for(auto &node : vec) { cout << node.name << " " << node.score << endl; } vec.clear(); } return 0; }