- nth_element();
nth_element(first, nth, last, compare)
求[first, last]这个区间中第n大小的元素,如果参数加入了
compare函数,就按compare函数的方式比较。
可以使用nth_element(a,a+n/2,a+n)函数获取中位数,这个查找中位数的时间复杂度是O(n),它是从第一数到最后一个数中找出第a+n/2大小的数
ps.
C++的STL库中的nth_element()方法,默认是求区间第k小的
nth_element(a,a+2,a+9),将下标为2,也就是第3个数放在正确的位置,求的是第3小的数a[2]
(a,a+k,a+n),函数只是把下标为k的元素放在了正确位置,对其它元素并没有排序,当然k左边元素都小于等于它,右边元素都大于等于它,所以可以利用这个函数快速定位某个元素。
nth_element()这个函数返回的仍是该数组,只不过某个元素放到了它应该在的位置