STL sort

Posted death-thorn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL sort相关的知识,希望对你有一定的参考价值。

sort 在 STL 库中是排序函数,有时冒泡等排序算法会超时时,我们可以使用STL中的快速排序函数 sort 完成排序。

又因为sort 在 algorithm 库里面,所以头文件应写成

#include<algorithm>

或者用万能头文件也可以

#include<bits/stdc++.h>

我们会发现 sort 有两种形式一个有三个参数,一个有两个参数,我们先讲讲两个参数的

sort 的前两个参数是起始地址和中止地址。

两个参数的代码如下

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int a[]={2,1,5,0,-1,5,9};
    sort(a,a+7);
    for(int i=0;i<7;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    return 0;
}

输出为“-1 0 1 2 5 5 9”。

这是一个从小到大的排序,是默认的升序,而降序就要用到第三个参数了。

可以调用 greater 和 less 进行升/降序排序,其实就是一个帮你写好的函数。

代码如下:

greater:

int a[11],n;
scanf("%d",&n);
for (int i = 1;i <= n;i++) scanf("%d",&a[i]);
sort(a+1,a+n+1,greater<int>()); //升序,这里要注意<>这个括号里要写排序的数组类型

less:

int a[11],n;
scanf("%d",&n);
for (int i = 1;i <= n;i++) scanf("%d",&a[i]);
sort(a+1,a+n+1,less<int>()); //降序,这里要主要<>括号里写的是数组类型

它也可以进行局部排序,就是将sort中第一个和第二个参数进行改变。

a+1就是从第2个数开始进行排序。

a+n+1就是排序到第n+1个数。

详细视频网址:https://www.bilibili.com/video/av26938209?p=57

详细视频网址:https://www.icourse163.org/learn/PKU-1001553023?tid=1002457004#/learn/content?type=detail&id=1003312836

以上是关于STL sort的主要内容,如果未能解决你的问题,请参考以下文章

c++ STLSGI STL版本sort函数的实现

python [代码片段]一些有趣的代码#sort

STL算法 — partial_sort

STL算法 — partial_sort

STL_算法_局部排序(partial_sortpartial_sort_copy)

STL_算法_对所有元素排序(sortstable_sort)