库函数之sort

库函数之sort:

// 语法:   
#include <algorithm>  
void sort(iterator start,iterator end);  
void sort(iterator start,iterator end,StritWeakOrdering cmp);  
 
/*  
    1,sort()算法将在区间 [start,end)中的元素升序排列。 
    2,如果两个元素相等,不能保证其维持原来顺序。 
    3,默认使用<操作符,如果定义比较函数cmp,则使用cmp。 
    4,sort()算法内部是introsort(内观排序,自省的快排)算法 
    5,时间复杂度O(N*log(N)) (平均和最坏) 
      
    例子:(降序排列)  
    bool cmp( int a, int b )  
    { 
        return a > b; 
    }    
    sort( v.begin(), v.end(), cmp ); 
     
    附:introsort原理 
    (1)三点中值法。取中间大小的为PIVOT;  
    (2)分割函数,使用中间左右两部分:L< M < R, 返回M;  
    (3)左部分递归调用,右部分在循环中处理;  
    (4)若分割层次大于2*K( K <= lg2N),则调用heapsort,防止退化为N2..;  
    (5)若当前进入的子序列长度< 16,则退出;(宗旨是调用QUITSORT使之基本有序)  
    (6)当整个序列基本有序后,直接调用简单插入排序。 
*/   
 
// 附:stable_sort partial_sort nth_element() merges()  
// 语法:  
#include <algorithm>  
void stable_sort( iterator start, iterator end );  
void stable_sort( iterator start, iterator end, StrictWeakOrdering cmp );   
/*   
    1,升序排列。 
    2,稳定排序。其代价是增加了时间复杂度,最坏情况下为O(N*(log(N))^2)。  
*/ 
 
 
#include <algorithm>  
void partial_sort( iterator start, iterator middle, iterator end );  
void partial_sort( iterator start, iterator middle, iterator end, StrictWeakOrdering cmp );  
/* 
    1,将区间[start,end)中的前N个元素升序排列;  
    2,N由start与middle确定。 
*/   
 
#include <algorithm>  
void nth_element( iterator start, iterator middle, iterator end );  
void nth_element( iterator start, iterator middle, iterator end, StrictWeakOrdering cmp );  
 
#include <algorithm>  
iterator merge( iterator start1, iterator end1, iterator start2, iterator end2, iterator result );  
iterator merge( iterator start1, iterator end1, iterator start2, iterator end2, iterator result, StrictWeakOrdering cmp ); 
// 语法:
#include <algorithm>
void sort(iterator start,iterator end);
void sort(iterator start,iterator end,StritWeakOrdering cmp);

/*
 1,sort()算法将在区间 [start,end)中的元素升序排列。
 2,如果两个元素相等,不能保证其维持原来顺序。
 3,默认使用<操作符,如果定义比较函数cmp,则使用cmp。
 4,sort()算法内部是introsort(内观排序,自省的快排)算法
 5,时间复杂度O(N*log(N)) (平均和最坏)
 
   例子:(降序排列)
 bool cmp( int a, int b )
 {
    return a > b;
  }  
  sort( v.begin(), v.end(), cmp );
  
 附:introsort原理
 (1)三点中值法。取中间大小的为PIVOT;
 (2)分割函数,使用中间左右两部分:L< M < R, 返回M;
 (3)左部分递归调用,右部分在循环中处理;
 (4)若分割层次大于2*K( K <= lg2N),则调用heapsort,防止退化为N2..;
 (5)若当前进入的子序列长度< 16,则退出;(宗旨是调用QUITSORT使之基本有序)
 (6)当整个序列基本有序后,直接调用简单插入排序。
*/

// 附:stable_sort partial_sort nth_element() merges()
// 语法:
#include <algorithm>
void stable_sort( iterator start, iterator end );
void stable_sort( iterator start, iterator end, StrictWeakOrdering cmp );
/* 
 1,升序排列。
 2,稳定排序。其代价是增加了时间复杂度,最坏情况下为O(N*(log(N))^2)。
*/


#include <algorithm>
void partial_sort( iterator start, iterator middle, iterator end );
void partial_sort( iterator start, iterator middle, iterator end, StrictWeakOrdering cmp );
/*
 1,将区间[start,end)中的前N个元素升序排列;
 2,N由start与middle确定。
*/

#include <algorithm>
void nth_element( iterator start, iterator middle, iterator end );
void nth_element( iterator start, iterator middle, iterator end, StrictWeakOrdering cmp );

#include <algorithm>
iterator merge( iterator start1, iterator end1, iterator start2, iterator end2, iterator result );
iterator merge( iterator start1, iterator end1, iterator start2, iterator end2, iterator result, StrictWeakOrdering cmp );

 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ahcaigen/archive/2010/02/27/5332627.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值