alglib::order_stat Namespace Reference

Functions

template<typename RandomAccessIter >
RandomAccessIter select_i (RandomAccessIter _first, RandomAccessIter _last, int i)
 

Function Documentation

template<typename RandomAccessIter >
RandomAccessIter alglib::order_stat::select_i ( RandomAccessIter  _first,
RandomAccessIter  _last,
int  i 
)
12  {
13 
14  if(_last <= _first)
15  return _last;
16 
17  RandomAccessIter pivot = randomized_partition(_first, _last);
18  int k = pivot - _first + 1;
19 
20  if(k == i)
21  return pivot;
22 
23  else if(i < k)
24  return select_i(_first, pivot, i);
25 
26  else
27  return select_i(pivot + 1, _last, i - k);
28 }
RandomAccessIter randomized_partition(RandomAccessIter first, RandomAccessIter last, const BinaryPred &LT)
Definition: sort.h:82
RandomAccessIter select_i(RandomAccessIter _first, RandomAccessIter _last, int i)
Definition: order_statistic.h:12