c++nth_element函数
nth_element函数的主要功能就是寻找第k大或者第k小(从0开始排序)的数,具体用法是:
vector<int> arr; //有一个无序数组
nth_element(arr.begin(), arr.begin() + k_th, arr.end()); //默认寻找第k小的数
//要寻找第k大的数需要额外参数
nth_element(arr.begin(), arr.begin() + k_th, arr.end(), greater<int>());
这个函数将保证第k小的数正好在位置k上,而在他之前的数都比他小,之后的数都比他大,但不保证前后的数字都是有序的,这一点跟快排很像。
但是本人用vs测试时发现这个函数直接将数组排好序了,实现了sort的功能,并不只是找到了第k大的数字
可能不同的编译器对这个函数的实现过程不同吧。