STL中排序算法函数所用技巧

1.向后拷贝操作。将区间[_Front, _Tail]内容拷贝到_X,其中,_Tail的值对应_X。

template<class _BI1, class _BI2> inline
 _BI2 copy_backward(_BI1 _Front, _BI1 _Tail, _BI2 _X)
 {while (_Tail != _Front)
  *--_X = *--_Tail;
 return (_X); }
 

2.以值_Piv为枢轴,将区间[_F, _L]划分为两个部分,前一部分所有元素小于_Piv,后一部分所有元素大于或等于_Piv,其实就是快速排序的原理。

template<class _RI, class _Ty> inline
 _RI _Unguarded_partition(_RI _F, _RI _L, _Ty _Piv)
 {for (; ; ++_F)
  {for (; *_F < _Piv; ++_F)
   ;
  for (; _Piv < *--_L; )
   ;
  if (_L <= _F)
   return (_F);
  iter_swap(_F, _L); //交换_F和_L指向的两个变量}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值