冒泡排序法具有稳定性
#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;
}


京公网安备 11010502036488号