#include<iostream>#include<algorithm>usingnamespace std;boolcmp(int a,int b)///实现从大到小排序的比较函数{
return a > b;}intmain(){
int i, a[100], n;while(cin >> n){
for(i =0; i < n; i++)scanf("%d",&a[i]);sort(a, a + n, cmp);for(i =0; i < n; i++)printf("%d ", a[i]);
cout << endl;}return0;}
sort函数实现字符串的排序
sort函数对string内的字符进行排序(string为字符串类型数据)
#include<iostream>#include<algorithm>#include<cstring>usingnamespace std;boolcmp(char a,char b)///比较函数{
return a > b;}intmain(){
string s;while(cin >> s){
sort(s.begin(), s.end());///从小到大
cout << s << endl;sort(s.begin(), s.end(), cmp);///从大到小
cout << s << endl;
cout << s.length()<< endl;///字符串长度函数}}
sort对一维字符数组内的字符进行排序
#include<iostream>#include<algorithm>#include<cstring>usingnamespace std;boolcmp(char a,char b)///比较函数{
return a > b;}intmain(){
char a[100];while(cin >> a){
sort(a, a +strlen(a));///从小到大
cout << a << endl;sort(a, a +strlen(a), cmp);///从大到小
cout << a << endl;
cout <<strlen(a)<< endl;///输出字符数组a的长度}}
sort对string类型的数组按照字典序排序
#include<iostream>#include<algorithm>#include<cstring>usingnamespace std;boolcmp(string a, string b)///按照字典序从大到小排序{
return a > b;}intmain(){
int i, j;
string s[12]={
"January","February","March","April","May","June","July","August","September","October","November","December"};sort(s, s +12);///字符串默认按照字典序从小到大排序,数默认按照大小从小到大排序for(i =0; i <12; i++)
cout << s[i]<< endl;
cout << endl;sort(s, s +12, cmp);///按照字典序从大到小排序for(i =0; i <12; i++)
cout << s[i]<< endl;return0;}
sort对string类型的数组根据长度进行排序
#include<iostream>#include<algorithm>#include<cstring>usingnamespace std;boolcmp1(string a, string b)///按照长度从小到大排序{
return a.length()< b.length();}boolcmp2(string a, string b)///按照长度从大到小排序{
return a.length()> b.length();}intmain(){
int i, j;
string s[12]={
"January","February","March","April","May","June","July","August","September","October","November","December"};sort(s, s +12, cmp1);///按照长度从小到大排序for(i =0; i <12; i++)
cout << s[i]<< endl;
cout << endl;sort(s, s +12, cmp2);///按照长度从大到小排序for(i =0; i <12; i++)
cout << s[i]<< endl;return0;}
对结构体数组进行排序(根据结构体中的某元素)
#include<iostream>#include<cstring>#include<algorithm>usingnamespace std;constint N =3;structStudent{
char name[20];///姓名int score;///成绩}stu[100010];/*
(1)如果两个学生的分数不同,则分数高的排在前面
(2)否则,将姓名字典序小的排在前面
*/boolcmp(Student a, Student b){
if(a.score != b.score)return a.score > b.score;elsereturnstrcmp(a.name, b.name)<0;}intmain(){
int i;
stu[0]={
"yzh",101};
stu[1]={
"pzj",100};
stu[2]={
"dzc",100};sort(stu, stu + N, cmp);for(i =0; i < N; i++)
cout << stu[i].name <<" "<< stu[i].score << endl;
cout << endl;}