关于使用算法头文件<algorithm>的排序的说明

[系统管理员] · 发布于 2019-09-04 · 浏览 27 回复 0

本道题的思路很简单,读入数组后,按照要求把给定的 L -> R 区间中的值全部取出来,然后做一个排序。

#include <iostream>

#include <algorithm>
 

using namespace std;
 

const int MAXN = 1000 + 5;

int num[MAXN], subNum[MAXN];

int n, m;

int l, r, k;

int i, j;

 

int main(){

cin >> n;
 

for(i = 0; i < n; i++){

cin >> num[i];

}
 

cin >> m;

while(m--){

cin >> l >> r >> k;

for(j = 0, i = (l-1); i < r; j++, i++){

subNum[j] = num[i];

}
 

sort(subNum, subNum + j, greater<int>()); // 注意这里的greater的用法,如果是要从小到大,则使用less<int>()

cout << subNum[k-1] << endl;

}
 

return 0;

}

当然,要注意的是这里面使用了算法头文件<algorithm>,里面有一个排序函数叫做sort(),具体的用法在程序里面已经说过了,在这里就不用赘述了。

但是,我们要知道的是,这个头文件是C++自己的头文件,而C语言中也有一个算法头文件“algorithm.h”,我们知道C++兼容C语言的语法,那么这两个头文件中的排序函数都有什么区别呢?

  1. C语言中的算法头文件中的排序函数是qsort()其内部实现是快速排序,不论在C/C++中引用它都是直接引用"algorithm.h"。
  2. 而C++语言中的算法头文件中的排序函数是sort(),其可以根据你数据的特点选择不同的排序函数,要引用它则需要使用<algorithm>

全部回复 共 0 条

还没有人回复。往下写第一条。

发表回复