四.c++中的算法--排序及相关操作---局部排序

来源:互联网 发布:哈尔滨java招聘 编辑:程序博客网 时间:2024/06/05 22:38

2.局部排序

  • partial_sort()
  • partial_sort_copy()

1.partial_sort()

函数原型为;

template< class RandomIt >void partial_sort( RandomIt first, RandomIt middle, RandomIt last );template< class RandomIt, class Compare >void partial_sort( RandomIt first, RandomIt middle, RandomIt last, Compare comp );

说明:
(1). 排序部分中的元素按升序排列的范围[first, last),排序后,[first,middle]具有顺序
(2). operator<是第一个版本使用比较的元素,第二个版本使用给定的二元比较函数comp.

2.partial_sort_copy

对区间内的元素进行复制并部分排序
函数原型:

template< class InputIt, class RandomIt >RandomIt partial_sort_copy( InputIt first, InputIt last,                            RandomIt d_first, RandomIt d_last );template< class InputIt, class RandomIt, class Compare >RandomIt partial_sort_copy( InputIt first, InputIt last,                            RandomIt d_first, RandomIt d_last,                            Compare comp );

说明:
partial_sort类似。

具有返回值:为排序范围的上边界的迭代器。即d_first + min(last - first, d_last - d_first).

例子:

    --------------------省略-------------    vector<int> vec1 = { 1, 2, 3,3,3, 6, 5, 4 };    vector<int> vec2 = { 1, 2, 3, 6, 3,3,5, 4 };    vector<int> vec3(8);    --------------------省略-------------    partial_sort(vec1.begin(),vec1.begin()+6,vec1.end());//前6个最小升序    partial_sort_copy(vec2.begin(),vec2.end(),vec3.begin(),vec3.end());    --------------------省略-------------

输出结果为:

vec1: 1   2   3   3   3   4   6   5vec2: 1   2   3   6   3   3   5   4vec3: 1   2   3   3   3   4   5   6
原创粉丝点击