STL 排序方法及相关集合运算
STL- nth_element 方法
用于求容器c区间范围[a+l,a+k,a+r)中第k大的元素即:nth_element(a+l,a+k,a+r) 。
此方法保证容器c区间[l,r)内第k小的元素位于第k个位置上(相对位置),但他并不保证其它元素有序。
int main()
{
int iarr[]{0,1,2,5,5,7,3,4,1};
vector<int> vec(iarr,iarr+sizeof(iarr)/sizeof(int));
nth_element(vec.begin()+1,vec.begin()+4,vec.end());
for(int i=0;i<vec.size();i++)
{
printf("%d ",vec.at(i));
}
printf("\nOver!\n");
return 0;
}
输出结果
STL - partial_sort 方法
partial_sort接受一个middle处迭代器,使序列中的( middle - first )个最小元素以递增(缺省为 ‘<’ )顺序排序,置于[first, middle)内。 方法 : partial_sort(first,middle,end) 。
int main()
{
int iarr[]{0,1,2,5,5,7,3,4,1};
vector<int> vec(iarr,iarr+sizeof(iarr)/sizeof(int));
vector<int>::iterator it = vec.find(vec.begin(),vec.end(),5);
partial_sort(vec.begin(),it,vec.end());
for(int i=0;i<vec.size();i++)
{
printf("%d ",vec.at(i));
}
printf("\nOver!\n");
return 0;
}
STL - 二分搜索算法
STL - binary_search 方法
二分搜