sort函数详解

往期文章推荐:

[C++] 非常实用的知识点-CSDN博客

1.8编程基础之多维数组————14:扫雷游戏地雷数计算-CSDN博客

(并不怎么华丽的分割线)


前言  

话说在C++中有这么一类算法,叫做排序算法

它有许多分支:冒泡排序,桶排序,希尔排序,插入排序......

数不胜数啊。

俗话说得好,学排序从冒泡学起。正好本人写过一篇排序算法之冒泡排序-CSDN博客,欢迎各位浏览(无齿地为自己打个小广告)。

OK言归正传。(哈哈哈)

又有一句俗话说得好,排序算法真难学。

所以说,C++里有没有这么一种东西,可以让我们少受甚至不受学排序的痛苦?

还真有。

这种东西,叫函数

这种函数,叫sort。

接下来,坐稳喽,起飞!

sort,启动!

有同志会认为sort是快速排序。

错了!同志们错了一半啊!

sort确实是快速排序,但它不完全是快速排序。

它是快速排序加归并排序的结合体。

光看看就知道,它非常快。

那么怎么定义sort呢?

众所周知,每个函数都有它的头文件。

sort的头文件很难记:#include<algorithm> 

啊(一万点暴击伤害)!!!!!!!

没事,咱们不是有万能头文件吗:#include<bits/stdc++.h>

但是某些网站不让用万能头怎么办呢?

只能手搓。所以还是得记普通头文件。

啊哈哈,跑题了。

OK那么sort怎么定义呢?

sort(a+1,a+n+1)  //举例

什么意思呢?

一般我们都是对一个数组进行排序,所以例子里的a就是个数组。

可是数组不能像变量一样加减,那么这里的a代表的其实是数组a的地址

a+1,a+n+1代表的是要排序的范围。

了解了基本的定理,我们就编上一段代码来试一下sort的威力。

int n,i;
cin>>n;

for(i=1;i<=n;i++) cin>>a[i];

sort(a+1,a+n+1);

for(i=1;i<=n;i++) cout<<a[i]; 

运行结果(样例):

 

我们得出一个结论:sort默认从小到大排序。 

如果我们想从大到小排序呢?

我们可以自定义一个辅助排序的函数叫cmp(比较函数),建议大家不要乱起名字。

cmp可以定义为intbool类型,因为它需要返回值。

在cmp内部,我们可以这么写:

int cmp(int x,int y)
{
    return x>y;
}

我们比较的是数组,所以这里默认的是前后两个值。

如果x大于y,那么我们返回的就是真值,程序就会从大到小排序。

对了,cmp作为sort的第三个参数使用。

把上述代码加上,再运行一下:

 从大到小排序,成功!

sort,启动!

后记

sort很容易忘,大家牢记,sort掌握,你就基本不用再学其他的排序算法了。

 

 感谢各位的浏览!Thanks♪(・ω・)ノ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值