sort函数只要有两种形式,一种两个参数,一种三个参数,而两种形式的前两个参数都是要比较对象的地址,第二种形式第三个参数是一个自己定义的cmp()函数,还要注意sort()的头文件是<algorithm>,在这里,我简单給几个代码
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
int a[100];
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
sort(a,a+n);//注意从a到a+n
for(int i=0;i<n;i++)cout<<a[i]<<" ";
return 0;
}//默认情况下是从小到大
第二种:
//用sort写一个按照学生成绩排名
#include<iostream>
#include<algorithm>
using namespace std;
struct STU
{
char name[8];
int grade;
};
bool cmp(STU a,STU b)
{
return a.grade>b.grade;//你需从结构体中找到一个能排序的标准
}
int main()
{
STU stu[5];
for(int i=0;i<4;i++)cin>>stu[i].name>>stu[i].grade;
sort(stu,stu+4,cmp);
for(int i=0;i<4;i++)cout<<stu[i].name<<" "<<stu[i].grade<<endl;
return 0;
}
第三种
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct STU
{
char name[30];
int grade;
};
bool cmp(STU a,STU b)
{
if(a.grade!=b.grade)return a.grade>b.grade;//分数是一种标准
else return strcmp(a.name,b.name)<0;//当分数一定后则根据字符串的字典序来排序
}
int main()
{
STU stu[20];
int n;
cin>>n;
for(int i=0;i<n;i++)cin>>stu[i].name>>stu[i].grade;
sort(stu,stu+n,cmp);
for(int i=0;i<n;i++)cout<<stu[i].name<<" "<<stu[i].grade<<endl;
return 0;
}