C++中sort函数的用法

1.升序(默认情况)

#include<iostream>
using namespace std;
#include<algorithm> 

int main()
{
	int a[10]={5,8,9,6,5,2,3,6,4,8};
	sort(a,a+10);//默认情况为升序 
	int i;
	for(i=0;i<10;i++)
	{
		cout<<a[i]<<endl;
	}
	
	return 0;
}

2.降序

*#include<iostream>
using namespace std;
#include<algorithm> 

int main()
{
	int a[10]={5,8,9,6,5,2,3,6,4,8};
	sort(a,a+10,greater<int>());//传入第三个参数——比较函数,实现降序 
	int i;
	for(i=0;i<10;i++)
	{
		cout<<a[i]<<endl;
	}
	
	return 0;
}

3.自定义函数实现降序(或升序)

#include<iostream>
using namespace std;
#include<algorithm>
#include<stdbool.h>
bool cmp(int num1, int num2)
{
    return num1 > num2;     // 可以简单理解为 > 降序排列;  <  升序排列
}

int main()
{
	int a[10]={5,8,9,6,5,2,3,6,4,8};
	sort(a,a+10,cmp); //自定义排序实现降序 
	int i;
	for(i=0;i<10;i++)
	{
		cout<<a[i]<<endl;
	}
	
	return 0;
}

4.结构体数组排序

在进行结构体数组排序时我遇到了devcpp的警告:[Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11

原因是对结构体数字初始化时用{}。

我参考这篇文章把问题解决了https://blog.csdn.net/huadong_xiaolin/article/details/116896195?ops_request_misc=&request_id=&biz_id=102&utm_term=%5BWarning%5D%20extended%20initializer&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-116896195.142^v99^pc_search_result_base2&spm=1018.2226.3001.4187

#include<iostream>
using namespace std;
#include<algorithm>
struct Student// 学生结构体
{   
    string name;    // 学生姓名
    int grade;      // 学生分数
    Student();  // 无参数构造函数
    Student(string name, int grade) : name(name), grade(grade) {};  // 有参数构造函数
};
bool cmp(Student s1, Student s2) {  // 自定义排序
    if (s1.grade != s2.grade) {     // 如果学生成绩不相同
        return s1.grade > s2.grade; // 则按照成绩降序排列
    }
    return s1.name < s2.name;   // 否则按照姓名升序排列
}

int main()
{
	int i;
	Student s[8]=
	{
		{"Bob",80},{"Ali",90},{"Ann",85},{"Liming",90},{"Trump",79},{"Fury",58},{"Jam",62},{"Lucy",89}
	};
	

    sort(s,s+8,cmp);
    for(i=0;i<8;i++)
    {
    	cout<<s[i].name<<" * "<<s[i].grade<<endl;
	}
	
	return 0;
}

详细的内容见这篇文章https://blog.csdn.net/VariatioZbw/article/details/125155432?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170817070116800227455985%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170817070116800227455985&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-125155432-null-null.142^v99^pc_search_result_base2&utm_term=c%2B%2B%20sort&spm=1018.2226.3001.4187

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值