先吐槽一句: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