IT常识
技术 Python PHP JavaScript IOS Android Java 数据库 资源 公众号 代码片段 github
  • IT常识
  • 技术

深海中的STL—nth_element

Posted 2020-10-26 自为

tags:

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

如果让你求区间第\\(k\\)大,你会怎么做呢?

主席树?确实是个不错的选择(不过像我这种垃圾还是乖乖打暴力吧)


在c++的stl库中,提供了nth_element这样一个函数

它的用法是nth_element(a+l,a+k,a+r)

这样它会使a这个数组中区间\\([l,r)\\)内的第\\(k\\)小的元素处在第\\(k\\)个位置上(相对位置)

但是它并不保证其他元素有序!




不过根据网友的实验,貌似在vs上是有序的,不过在dev中是无序的

时间复杂度:\\(O(n)\\)

#include<iostream>
#include<algorithm>
using namespace std;
int main() {
	static int a[15] = {0, 1, 2, 5, 7, 3, 4, 1};
	nth_element(a + 1, a + 4, a + 8);
	for (int i = 1; i <= 8; i++) printf("%d ", a[i]); printf("\\n");
	return 0;
}

输出结果

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

STL之nth_element()(取容器中的第n大值)

STL_算法_依据第n个元素排序(nth_element)

STL_算法_根据第n个元素排序(nth_element)

STL中nth_element的用法

C++ nth_element 算法的有趣用例是啥?

详细解说 STL 排序(Sort)(转)

(c)2006-2024 SYSTEM All Rights Reserved IT常识