c++中的sort排序用法

sort(begin,end,compare)

STl中自带了sort排序函数,sort可以方便的给指定空间的元素进行排序。当然使用此函数要加文件名#include < algorith> 即可;

参数1:begin 代表数组的首地址,写上数组名即可(当然有时候也会传入结构体内部成员的地址)

参数2:end 首地址加上数组的长度n(也就是你要排序的元素的个数 代表尾地址的下一地址)

参数3:compare 默认不填尾升序排序,也可以自己编写排序规则
compare简单函数编写

bool compare (int a,int b)
{
		return a<b;   //升序排列,return a>b;  为降序排列;
}

其实sort用处在很多方面都体现的到,奈何自己只是浅陋,目前只知道做题的时候运用一下,以后会补充

时隔三个月,我又来更新了;

时间复杂度:

sort排序比起手写的循环排序要方便的多,时间复杂度为 n*log2(n)

1

第一个用法就是上面所介绍的,直接对一个数组就行sort排序,并且可以自定义排列顺序,不再过多详述;

2

除了能对数组sort以外,还能对结构体就行排序;举个栗子;
一个学生的信息由 学号 和 姓名首字母组成;现在有50个学生的信息,然后将学生信息按姓名从小到大排列,如果姓名首字母一样,那么按学号从小到大排列;代码实现如下;

struct node
{
    int id;//存放学号
    char name;//存放姓名首字母
}bb[10000];
bool cmp(node a,node b)
{
    if(a.name==b.name)//如果姓名首字母一样,那么按学号从小到大排列;
        return a.id<b.id;
    else return a.name<b.name;//将姓名从小到大排列
}
for(int i=0;i<50;i++)
{
    scanf("%d %c",bb[i].id,bb[i].name);
}

sort(bb,bb+50,cmp);//使用sort的形式和数组一样

关于sort排序有几道简单典型的题,一一列举出来;

开门人和关门人 HDU - 1234
稳定排序 HDU - 1872
EXCEL排序 HDU - 1862
统计同成绩学生人数 HDU - 1235
今年暑假不AC HDU - 2037

题解:

暑假培训第一天 :sort+结构体+简单数学+暴力

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值