结构体排序 sort排序
Posted haggard
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体排序 sort排序相关的知识,希望对你有一定的参考价值。
首先,在学习c的时候,应该学了很多排序方法吧,类似于冒泡排序呀,选择排序,插入排序,快排呀等等,但是,在c++中,有一个很好的排序就是sort排序,在stl里面,sort排序可以说,无论是时间复杂度还是空间复杂度,都是很优化的,这就足以见证sort排序的强大了,也说明sort排序的重要性。
在C++中使用sort()函数需要使用#include<algorithm>
头文件,算法的常用头文件,不过多解释啦,当然,你写万能头文件也是可以的;
sort()函数可以对给定区间所有元素进行排序。它有三个参数sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,cmp参数可以不写,如果不写的话,默认从小到大进行排序。如果我们需要按照其他的排序准则,那么就需要我们自己定义一个bool类型的函数来传入。比如我们对一个整型数组进行从大到小排序:
#include<iostream> #include<algorithm> using namespace std; bool cmp(int x,int y) return x> y; int main() int num[10] = 65,59,96,13,21,80,72,33,44,99; sort(num,num+10,cmp); for(int i=0;i<10;i++) cout<<num[i]<<" "; //输出99 96 80 72 65 59 44 33 21 13 return 0;
当然,这只是最基础的,cmp的用法常常是对结构体进行排序,比如说给了你一个结构体来存储学生的信息,按照成绩来排序,那么这个时候就需要用cmp排序啦;
#include<iostream> #include<string> #include<algorithm> using namespace std; struct Student string name; int score; ;//学生的结构体 bool cmp(Student x, Student y) return x.score > y.score; //排序 int main() Student stu[3]; string n; int s; for (int i = 0; i < 3; i++) cin >>stu[i].name >> stu[i].score; sort(stu, stu + 3, cmp); for (int i = 0; i < 3; i++) cout << stu[i].name << " " << stu[i].score << endl; return 0;
好啦,这里,是不是对sort排序有了一个大致的了解啊。
所念皆有果,梦中有星海,热爱可抵岁月漫长
qsort 与sort 对结构体排序实例
qsort 与sort 对结构体排序实例
#include<bits/stdc++.h>
using namespace std;
typedef struct {
string book;
int num;
}Book;
//qsort的比较函数
int cmp(const void * a, const void * b) {
return (*(Book*)a).num > (*(Book*)b).num ? 1 : 0;
}
//sort的比较函数
bool cmp_(Book a, Book b) {
return a.num > b.num;
}
int main() {
Book Bok[3] = { {"1",4},{"2",2},{"3",3} };
cout << endl << "----------------" << "qsort函数" << endl;
qsort(Bok, 3, sizeof(Bok[0]),cmp);
for (auto i : Bok) {
cout << i.num << endl;
}
cout << "----------------" << "sort函数" << endl;
sort(Bok, Bok + 3, cmp_);
for (auto i : Bok) {
cout << i.num << endl;
}
return 0;
}
以上是关于结构体排序 sort排序的主要内容,如果未能解决你的问题,请参考以下文章