快速排序
sort类函数:
快速排序需要注意的:
1.一般是从小到大排序;
2.声明从大到小如下:
sort(a,a+x,cmp);
bool cmp(int a,int b)
{
return a>b;
}
bool cmp(node a,node b)
{ return a.a>b.b;
}
要注意bool;
函数名 功能描述
sort 对给定区间所有元素进行排序
stable_sort 对给定区间所有元素进行稳定排序
partial_sort 对给定区间所有元素部分排序
partial_sort_copy 对给定区间复制并排序
nth_element 找出给定区间的某个位置对应的元素
is_sorted 判断一个区间是否已经排好序
partition 使得符合某个条件的元素放在前面
stable_partition 相对稳定的使得符合某个条件的元素放在前面
需要头文件
语法描述:sort(begin,end,cmp),cmp参数可以没有,如果没有默认非降序排序。
以int为例的基本数据类型的sort使用
复制代码
#include
#include
#include
using namespace std;
int main()
{
int a[5]={1,3,4,2,5};
sort(a,a+5);
for(int i=0;i<5;i++)
cout<<a[i]<<’ ';
return 0;
}
复制代码
因为没有cmp参数,默认为非降序排序,结果为:
1 2 3 4 5
若设计为非升序排序,则cmp函数的编写:
bool cmp(int a,int b)
{
return a>b;
}
其实对于这么简单的任务(类型支持“<”、“>”等比较运算符),完全没必要自己写一个类出来。标准库里已经有现成的了,就在functional里,include进来就行了。functional提供了一堆基于模板的比较函数对象。它们是(看名字就知道意思了):equal_to、not_equal_to、greater、greater_equal、less、less_equal。对于这个问题来说,greater和less就足够了,直接拿过来用:
升序:sort(begin,end,less());
降序:sort(begin,end,greater()).