sort排序问题

前言:

其实sort排序应该是我接触最早的排序,写这篇是为了规范一下用法。


1.sort的注意事项

sort没有返回值,不需要用变量去记录结果。
sort的时间复杂度是:O(nlog n)。
排序范围是[begin,end),不包括end这个元素。


2.sort的比较函数


假设有int数组,int a[10]
sort的格式一般是sort(a,a+num,f(x)),函数可以省略,默认为从小到大排序。
如果要从大到小排序,可以用系统自带的greater()
即sort(a,a+mun,greater<int>())
也可以自定义一个大于,如:
bool my_greater(int x,int y){
    return (a>b);
}
sort(a,a+num,my_greater)//注意格式上的区别这里greater后面没有()
sort还可以对结构体排序
//但是一般比较函数要自己写
struct Student{
    string name;
    int age;
};
bool my_greater(struct Student*a,struct Student*b){
    return a->age > b->age;
}
sort(a.begin(),a.end(),my_greater)//同样my_greater后面没有()


3.相关函数

<1>stable_sort()

当排序元素相等时,保留原来的顺序,在对结构体排序时,当结构体中的排序元素相等时,如果需要保留原序,可以用这个。

<2>partial_sort()

局部排序。如10个数字需要输出最小的5个数,sort()的话需要全部排序在输出前五个,这个可以直接输出前五个。



全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务