STL排序算法

来源:互联网 发布:c 从excel导入数据 编辑:程序博客网 时间:2024/05/16 01:26

sort :以升序重新排列范围内的元素,重载版本使用了自定义的比较操作。 算法比较简单,


stable_partition :与 partition 类似,不过它不保证保留容器中的相对顺序。

 

template< class BidirectionalIterator, class Predicate >
BidirectionalIterator
stable_partition( BidirectionalIterator first,
BidirectionalIterator last,
Predicate pred );

 

 此算法将[first,last)序列内的元素进行谓词pred指示的操作进行比较,符合条件的放置在新序列的前面,不满足条件的从序列中后移,返回一个指向不满足条件的元素在序列中的位置迭代器。

 


stable_sort :利用底层类型的小于操作符以升序重新排列[first,last)范围内的元素并且
保留相等元素之间的顺序关系第二版本根据comp 对元素进行排序

template< class RandomAccessIterator >
void
stable_sort( RandomAccessIterator first,
RandomAccessIterator last );
template< class RandomAccessIterator, class Compare >
void
stable_sort( RandomAccessIterator first,
RandomAccessIterator last, Compare comp );

与sort相似,根据comp的比较算法仅仅对[first,last)序列内的元素进行sort排序。

 

 

partial_sort :对整个序列做部分排序,被排序元素的个数正好可以被放到范围内。重载版本使用自定义的比较操作。

template< class RandomAccessIterator >
void
partial_sort( RandomAccessIterator first,
RandomAccessIterator middle,
RandomAccessIterator last );
template< class RandomAccessIterator, class Compare >
void
partial_sort( RandomAccessIterator first,
RandomAccessIterator middle,
RandomAccessIterator last, Compare comp );
partial_sort()对整个序列作部分排序被排序元素的个数正好可以被放到[first,middle)
范围内在[middle,last)中的元素是未经排序的它们都落在实际被排序的序列之外例如
已知数组
int ia[] = {29,23,20,22,17,15,26,51,19,12,35,40 };
调用partial_sort() 使第六个元素为middle
stable_sort( &ia[0], &ia[5], &ia[12] );
则产生了一个序列其中五个最小的元素被排序即middle-first 个元素
{12,15,17,19,20,29,23,22,26,51,35,40} 从middle 到last-1 的元素并没有按任何特定的顺序
但是它们的值都落在实际被排序的序列之外第一个版本用底层类型的小于操作符第二个
版本根据comp 对元素进行排序 


partial_sort_copy :partial_sort_copy()的行为与partial_sort()相同只不过它把经过部分排序的序列拷贝到由[result_first,result_last)标记的容器中,仅仅copy排序的部分元素。原序列容器位置不变。

 

 

原创粉丝点击