62 #define __PCL_QS_STACK_SIZE 32 // Stack size for the QuickSort algorithms 63 #define __PCL_QS_IS_THRESHOLD 11 // QuickSort/InsertionSort switch threshold 86 template <
class BI,
class T>
inline 87 void __pcl_insertion_sort__( BI i, BI j,
const T* )
92 for ( --k; --x != i; )
100 for ( k = y; v < *--k; y = k )
116 template <
class BI>
inline 119 __pcl_insertion_sort__( i, j,
ItemType( i ) );
124 template <
class BI,
class BP,
class T>
inline 125 void __pcl_insertion_sort__( BI i, BI j, BP p,
const T* )
130 for ( --k; --x != i; )
138 for ( k = y; p( v, *--k ); y = k )
154 template <
class BI,
class BP>
inline 157 __pcl_insertion_sort__( i, j, p,
ItemType( i ) );
162 template <
class RI,
class T>
inline 163 void __pcl_quick_sort__( RI i, RI j, T* )
177 if ( r-l < __PCL_QS_IS_THRESHOLD )
179 for ( RI x = x0; ++x <= y; )
183 for ( ; --x1 >= x0 && v < *x1; )
198 Swap( *++x, *(i + ((l+r) >> 1)) );
224 if ( r-dx+1 >= dy-l )
249 template <
class RI>
inline 252 __pcl_quick_sort__( i, j,
ItemType( i ) );
257 template <
class RI,
class BP,
class T>
inline 258 void __pcl_quick_sort__( RI i, RI j, BP p, T* )
272 if ( r-l < __PCL_QS_IS_THRESHOLD )
274 for ( RI x = x0; ++x <= y; )
278 for ( ; --x1 >= x0 && p( v, *x1 ); )
293 Swap( *++x, *(i + ((l+r) >> 1)) );
306 while ( p( *++x, v ) );
307 while ( p( v, *--y ) );
319 if ( r-dx+1 >= dy-l )
345 template <
class RI,
class BP>
inline 348 __pcl_quick_sort__( i, j, p,
ItemType( i ) );
353 template <
class RI,
class T>
inline 354 void __pcl_heap_sort__( RI i, RI j, T* )
363 for ( i += di-1, --j; ; )
387 for (
distance_type dy2 = di, dy = di; !(dj < (dy <<= 1)); dy2 = dy )
391 if ( dy < dj && *y < *(y+1) )
419 template <
class RI>
inline 422 __pcl_heap_sort__( i, j,
ItemType( i ) );
427 template <
class RI,
class BP,
class T>
inline 428 void __pcl_heap_sort__( RI i, RI j, BP p, T* )
437 for ( i += di-1, --j; ; )
461 for (
distance_type dy2 = di, dy = di; !(dj < (dy <<= 1)); dy2 = dy )
465 if ( dy < dj && p( *y, *(y+1) ) )
493 template <
class RI,
class BP>
inline 496 __pcl_heap_sort__( i, j, p,
ItemType( i ) );
501 template <
class BI>
inline 507 template <
class RI>
inline 510 #ifdef __PCL_PREFER_HEAPSORT 533 template <
class BI>
inline 541 template <
class BI,
class BP>
inline 547 template <
class RI,
class BP>
inline 550 #ifdef __PCL_PREFER_HEAPSORT 574 template <
class BI,
class BP>
inline 584 #endif // __PCL_Sort_h Random access iterator class.
T * ItemType(const Iterator< C, T > &)
void Swap(GenericPoint< T > &p1, GenericPoint< T > &p2) noexcept
Bidirectional iterator class.
void QuickSort(RI i, RI j)
void InsertionSort(BI i, BI j)
C IteratorClass(const Iterator< C, T > &)
void HeapSort(RI i, RI j)