先吐槽一句:sort真好用 qwq
sort是什么?
sort是STL(Standard Template Library)中定义的一个函数,可以实现对某一个容器内的元素[i,j)进行排序,其内部使用快速排序实现,时间复杂度为o(nlongn)。
sort如何使用?
数组版:
#include <iostream>
#include <algorithm>
const int MAX = 100;
int a[MAX] = {0}, n;
int main()
{
std::cin >> n;
for(int i = 1;i <= n;i++) std::cin >> a[i];
std::sort(a+1,a+n+1); // 因为[i,j),不包含j,所以n+1
//降序 std::sort(a+1,a+n+1,std::greater<int>());
for(int i = 1;i <= n;i++) std::cout << a[i] <<" ";
return 0;
}
结构体版:
这里提一句,sort内部是用 " < " 来比较大小进行排序的,所以我们给结构体重载一个"<"运算符,这叫运算符重载。
实现智学网排名 ( • ̀ω•́ )✧
输入学生人数,年龄,成绩
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
struct peo
{
string name; //名称
int age; //年龄
int data; //成绩
bool operator< (const peo &b) const
{
return this->data > b.data; //以成绩为排序依据,注意 是“>”
}
}a[100];
int n;
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i].name >> a[i].age >> a[i].data;
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; i++)
cout << i << ". " << a[i].name << " " << a[i].age << " " << a[i].data << endl;
return 0;
}
练习
分数线划定https://www.luogu.org/problemnew/show/P1068
Comments NOTHING