sort排序又叫快速排序(快排)
1、需要引入头文件
#include <algorithm>
2、sort函数的引用
- 默认的sort函数是按升序排。
sort(a,a+n); //两个参数分别为待排序数组的首地址和尾地址 - 可以自己写一个cmp函数,按特定意图进行排序。
sort(a,a+n,cmp);
1、sort排序之升序排列
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0; i<n; i++){
cin>>a[i];
}
sort(a,a+n);
for(int i=0; i<n; i++){
cout<<a[i]<<endl;
}
return 0;
}
2、sort排序之降序排列
#include <iostream>
#include <algorithm>
using namespace std;
int test(int x,int y){
return x>y; //降序排列
// return x<y; //升序排列
}
int main(){
int n;
cin>>n;
int a[n];
for(int i=0; i<n; i++){
cin>>a[i];
}
sort(a,a+n,test);
for(int i=0; i<n; i++){
cout<<a[i]<<endl;
}
return 0;
}
3、sort排序之结构体排序
/**
现在有n名学的姓名,年龄和考试成绩,对这写数据进行排列
要求: 分数按从高往低排序
如果分数相同,按名字先后顺序进行排列
*/
#include <iostream>
using namespace std;
struct stu{
int age,fen;
string name;
};
//注意cmp的参数x,y的类型要和结构体stu类型相同
int cmp(stu x,stu y){//排序方法
if(x.fen>y.fen){
return 1;
}else if(x.fen==y.fen && x.name>y.name){
return 1;
}
return 0;
}
int main(){
int n;
stu st[1000];
cin>>n;
for(int i=1;i<=n;i++){
cin>>st[i].name>>st[i].age>>st[i].fen;
}
sort(st+1,st+n+1,cmp);//快排
for(int i=1;i<=n;i++){
cout<<st[i].name<<" "<<st[i].age<<" "<<st[i].fen;
}
return 0;
}
网友评论