sort函数,调用时使用函数头:
#include <algorithm>
sort(begin,end);用来表示一个范围。
1 int _tmain(int argc, _TCHAR* argv[]) 2 { 3 int a[20]={2,4,1,23,5,76,0,43,24,65},i; 4 for(i=0;i<20;i++) 5 cout<<a[i]<<endl; 6 sort(a,a+20); 7 for(i=0;i<20;i++) 8 cout<<a[i]<<endl; 9 return 0; 10 }
sort默认是升序排列的,当要更改为降序排列:
那么首先是自己写一个比较函数,然后调用三个参数的sort即可
调用三个参数的sort:sort(begin,end,compare)
1 bool compare(int a,int b) 2 { 3 return a<b; //升序排列,如果改为return a>b,则为降序 4 5 } 6 7 int _tmain(int argc, _TCHAR* argv[]) 8 { 9 int a[20]={2,4,1,23,5,76,0,43,24,65},i; 10 for(i=0;i<20;i++) 11 cout<<a[i]<<endl; 12 sort(a,a+20,compare); 13 for(i=0;i<20;i++) 14 cout<<a[i]<<endl; 15 return 0; 16 }
struct name{
char a[20];
int b;
}ch[max];
bool cmp(name A, name B){
return A.b>B.b;
}
for(int i=0; i<n; i++){
cin>>ch[i].a>>ch[i].b;
}
sort(ch, ch+n, cmp);
for(int i=0; i<n; i++){
cout<<ch[i].a<<" "<<ch[i].b<<endl;
}
当是有一些条件进行排序时,可以使用下边的方式:
题目描述 用一维数组存储学号和成绩,然后,按成绩排序输出。 输入描述: 输入第一行包括一个整数N(1<=N<=100),代表学生的个数。 接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。 输出描述: 按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。 如果学生的成绩相同,则按照学号的大小进行从小到大排序。 输入例子: 3 1 90 2 87 3 92 输出例子: 2 87 1 90 3 92
1 #include <iostream> 2 #include <algorithm> 3 #define max 105 4 5 using namespace std; 6 7 struct tianxia{ 8 int p; 9 int q; 10 }S[max]; 11 12 bool cmp(tianxia A,tianxia B){ 13 if(A.q==B.q){ 14 return A.p<B.p; 15 }else{ 16 return A.q<B.q; 17 } 18 } 19 20 int main() 21 { 22 int N; 23 while(cin>>N){ 24 for(int i = 0;i < N; i++){ 25 cin>>S[i].p>>S[i].q; 26 } 27 sort(S,S+N,cmp); 28 29 for(int i = 0;i < N; i++){ 30 cout<<S[i].p<<" "<<S[i].q<<endl; 31 } 32 } 33 return 0; 34 }