C++中sort的用法

顾名思义,sort就是用来排序的函数, 它根据具体情形使用不同的排序方法, 效率较高。 一般来说, 不推荐使用C语言中的qsort函数, 原因是qsort用起来比较烦琐, 涉及很多指针的操作。而且sort在实现中规避了经典快速排序中可能出现的会导致实际复杂度退化到O(n2) 的极端情况。

sort函数的使用必须加上头文件

#include<algorithm>
using namespace std;

使用方式:

sort(首元素地址(必填), 尾元素地址的下一个地址(必填), 比较函数(非必填)};

如果不写比较函数,则默认对前面给出的区间进行递增排序。

例如:

#include<iostream>
#include<algorithm>
using namespace std;
int main() {
	int a[6] = {9, 1, 4, 8, 3, 7};
	
	//将a[0]~a[3]从小到大排序
	sort(a, a+4);
	for(int i=0;i<6;i++){
		cout<<a[i]<<" ";
	}
	
	return 0;
}

运行之后可以得到下面的结果, 可以试若理解一下(特别注意理解“尾元素地址的下一 个地址”)。输出结果:
1 4 8 9 3 7


sort的第三个可选参数就是 compare函数(一般写作cmp函数).
如果想要从大到小来排序,则要使用比较函数cmp来 ”告诉" sort何时要交换元素(让 元素的大小比较关系反过来)。还是上面那个例子,这里比较的元素是int类型,可以这样写:

#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a int b) {
	return a > b;	//可以理解为当a > b时把a放在b前面
}
int main() {
	int a[6] = {9, 1, 4, 8, 3, 7};
	
	//将a[0]~a[3]从小到大排序
	sort(a, a+4, cmp);
	for(int i=0;i<6;i++){
		cout<<a[i]<<" ";
	}
	
	return 0;
}

输出结果:
9 8 4 1 3 7

参考书籍:《算法笔记》–胡凡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值