sort排序函数

	sort函数可以排序任何类型的函数,包括自己写的结构体
	(sort函数效率高)

头文件

#include<algorithm>

排序数值
从小到大

int num[10]={1,9,3,5,6,7,4,3,32,2};
//sort(num+i,num+j),从num[i]到num[j-1]之间的元素进行排序
sort(num,num+10);//从num[0]--num[9]的元素进行排序 ,
//1 2 3 3 4 5 6 7 9 32
sort(num+2,num+10);//从num[2]--num[9]的元素进行排序
//1 9 2 3 3 4 5 6 7 32

从大到小
a、使用greater

int num[10]={1,9,3,5,6,7,4,3,32,2};
//greater表示个更大的意思,<int>表示排序的数组元素的类型是int,排序其他类型的数据可更改参数
sort(num,num+10,greater<int>());
//32 9 7 6 5 4 3 3 2 1

b、自定义一个比较大小的函数

bool cmp(int a,int b)
{
	return a>b;
 }
int main()
{
	int num[10]={1,9,3,5,6,7,4,3,32,2};
	sort(num,num+10,cmp);
	//输出:32 9 7 6 5 4 3 3 2 1
	return 0;
}

排序(自定义)结构体

#include<iostream>
#include<string>
#include<algorithm>//sort函数包含的头文件
using namespace std;
//定义一个学生类型的结构体
typedef struct student
{
    string name;           //学生姓名
    int achievement;     //学生成绩
} student;
//这是函数是sort函数的第三个参数
//如果希望升序排序,就是"<",降序排列就是">"号
//如果希望用其他的参数作为排序条件,只需要把相应的条件改一下(如果改成name),这样结构体就以name作为排序标准
bool comparison(student a,student b){
    return a.achievement<b.achievement;
}
//用来显示学生信息的函数
void show(student *stu,int n)
{
    for(int i = 0; i < n; i++)
    {
        cout<<"姓名:"<<stu[i].name<<'\t'<<"成绩:"<<stu[i].achievement<<endl;
    }
}
int main()
{
    student stu[] = { {"张三",99},{"李四",87},{"王二",100} ,{"麻子",60}};
    cout<<"排序前:"<<endl;
    show(stu,4);
    sort(stu,stu+4,comparison);
    cout<<"排序后:"<<endl;
    show(stu,4);
    return 0;
}
  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值