局部排序
partial_sort(b, se, e)
partial_sort(b, se, e, p)
partial_sort_copy(sb, se, db, de)
源区间[sb, se)
,目标区间[db, de)
返回值:复制后的元素的下一个位置 partial_sort_copy(sb, se, db, de, p)
默认从小到大升序排序。
partial_sort()
代码示例
#include <iostream>
#include <deque>
#include <algorithm>
#include <functional>
using namespace std;
int main ( )
{
deque< int > ideq;
for ( int i = 3 ; i <= 7 ; ++ i)
ideq. push_back ( i) ;
for ( int i = 2 ; i <= 6 ; ++ i)
ideq. push_back ( i) ;
for ( int i = 1 ; i <= 5 ; ++ i)
ideq. push_back ( i) ;
cout << "ideq原始数据:" << endl;
for ( deque< int > :: iterator iter = ideq. begin ( ) ;
iter != ideq. end ( ) ; ++ iter)
cout << * iter << ' ' ;
cout << endl;
cout << "只排序前5个数据:(从小到大)" << endl;
partial_sort ( ideq. begin ( ) , ideq. begin ( ) + 5 , ideq. end ( ) ) ;
for ( deque< int > :: iterator iter = ideq. begin ( ) ;
iter != ideq. end ( ) ; ++ iter)
cout << * iter << ' ' ;
cout << endl;
cout << "只排序前5个数据:(从大到小)" << endl;
partial_sort ( ideq. begin ( ) , ideq. begin ( ) + 5 , ideq. end ( ) , greater< int > ( ) ) ;
for ( deque< int > :: iterator iter = ideq. begin ( ) ;
iter != ideq. end ( ) ; ++ iter)
cout << * iter << ' ' ;
cout << endl;
return 0 ;
}
partial_sort_copy()
代码示例
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
#include <functional>
#include <iterator>
using namespace std;
int main ( )
{
deque< int > ideq;
vector< int > ivec6 ( 6 ) , ivec30 ( 30 ) ;
for ( int i = 3 ; i <= 7 ; ++ i)
ideq. push_back ( i) ;
for ( int i = 2 ; i <= 6 ; ++ i)
ideq. push_back ( i) ;
for ( int i = 1 ; i <= 5 ; ++ i)
ideq. push_back ( i) ;
cout << "ideq原始数据:" << endl;
for ( deque< int > :: iterator iter = ideq. begin ( ) ;
iter != ideq. end ( ) ; ++ iter)
cout << * iter << ' ' ;
cout << endl;
vector< int > :: iterator pos6;
pos6 = partial_sort_copy ( ideq. begin ( ) , ideq. end ( ) ,
ivec6. begin ( ) , ivec6. end ( ) ) ;
copy ( ivec6. begin ( ) , ivec6. end ( ) , ostream_iterator< int > ( cout, " " ) ) ;
cout << endl;
copy ( ivec6. begin ( ) , pos6, ostream_iterator< int > ( cout, " " ) ) ;
cout << endl;
vector< int > :: iterator pos;
pos = partial_sort_copy ( ideq. begin ( ) , ideq. end ( ) ,
ivec30. begin ( ) , ivec30. end ( ) , greater< int > ( ) ) ;
copy ( ivec30. begin ( ) , ivec30. end ( ) , ostream_iterator< int > ( cout, " " ) ) ;
cout << endl;
copy ( ivec30. begin ( ) , pos, ostream_iterator< int > ( cout, " " ) ) ;
cout << endl;
return 0 ;
}