C++ STL之排序函数详解

本文详细介绍了C++ STL中的各种排序函数,包括sort、stable_sort、partial_sort、partial_sort_copy、nth_element、is_sorted以及Partition和stable_partition。讲解了它们的工作原理、时间复杂度以及应用场景,并给出了实例演示。强调了选择合适排序函数的重要性,提供了选择建议。
摘要由CSDN通过智能技术生成

排序函数:

函数名 功能描述
sort 对给定区间所有元素进行排序
stable_sort 对给定区间所有元素进行稳定排序 
partial_sort 对给定区间所有元素部分排
partial_sort_copy 对给定区间复制并排序
nth_element 找出给定区间的某个位置对应的元素
is_sorted 判断一个区间是否已经排好序
partition 使得符合某个条件的元素放在前面 
stable_partition 相对稳定的使得符合某个条件的元素放在前面
 
 
 
 
 
 
 
 
 
 
 
 




sort:

要使用此函数只需用#include <algorithm> sort即可使用,
语法描述为:
sort(begin,end),表示一个范围,例如:
int main()
{
	int a[]={2,4,1,23,5,76,0,43,24,65}; 
	int i; 
	for(i=0;i<10;i++)
		cout<<a[i]<<" ";
	cout<<endl;
	sort(a,a+10);
	for(i=0;i<10;i++)
		cout<<a[i]<<" ";
	return 0;
}
输出结果:
2 4 1 23 5 76 0 43 24 65
0 1 2 4 5 23 24 43 65 76
---------------------------------
输出结果将是把数组a按升序排序,说到这里可能就有人会问怎么样用它降序排列呢?这就是下一个讨论的内容.
一种是自己编写一个比较函数来实现,接着调用三个参数的sort:sort(begin,end,compare)就成了。
对于list容器,这个方法也适用,把compare作为sort的参数就可以了,即:sort(compare).
1)自己编写compare函数:
bool compare(int a,int b)
{
      return a>b;   //降序排列,如果改为return a<b,则为升序
}
输出结果
2 4 1 23 5 76 0 43 24 65
76 65 43 24 23 5 4 2 1 0
---------------------------------

2)更进一步,让这种操作更加能适应变化。也就是说,能给比较函数一个参数,用来指示是按升序还是按降序排,这回轮到函数对象出场了。
为了描述方便,我先定义一个枚举类型EnumComp用来表示升序和降序。很简单:
        enum Enumc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值