最近在做题过程中发现了这一个好用的STL函数nth_element
我们先来了解一下这个函数
nth_element() 函数该函数可以从某个序列中找到第 n 小的元素 K,并将 K 移动到序列中第 n 的位置处,并且在处理过后,所有位于 K 之前的元素都比 K 小,所有位于 K 之后的元素都比 K 大。
当然,我们也可以将 nth_element() 函数的排序规则自定义为降序排序,此时该函数会找到第 n 大的元素 K 并将其移动到第 n 的位置处,同时所有位于 K 之前的元素都比 K 大,所有位于 K 之后的元素都比 K 小。
其次,使用这个函数时要注意它也是一个函数模板,定义在algorithm函数库中,使用时要引用这一头文件。
函数有两种语法格式,具体有两种格式:
(1) 默认的升序方式 : nth_element(first,nth,last).默认为less<Datatype>().升序排列。
(2) 排序规则为自定义的cmp排序规则 :nth_element(first,nth,second,cmp);(cmp为自定义的函数)也可以用greater<Datatype>().降序排列。
具体的应用可以看下面代码