IT++ Logo

itpp::Sort< T > Class Template Reference

Class for sorting of vectors. More...

#include <itpp/base/sort.h>

List of all members.

Public Member Functions

 Sort (SORTING_METHOD method=INTROSORT)
 Constructor that sets Intro Sort method by default.
void set_method (SORTING_METHOD method)
 Set sorting method.
SORTING_METHOD get_method () const
 Get current sorting method.
void sort (int low, int high, Vec< T > &data)
 Sorting function of a subset of a vector data.
ivec sort_index (int low, int high, const Vec< T > &data)
 Sorting function that returns a sorted index vector.
void intro_sort (int low, int high, int max_depth, Vec< T > &data)
 Introsort function of a subset of a vector data.
ivec intro_sort_index (int low, int high, int max_depth, const Vec< T > &data)
 Introsort function, which returns a sorted index vector.


Detailed Description

template<class T>
class itpp::Sort< T >

Class for sorting of vectors.

A class which takes a vector, and sorts its values descending. There are two types of sort: a normal sort (accessed via the Sort::sort() function) which sorts the vector passed in the argument, and an index sort (accessed via the Sort::sort_index() function) which leaves the passed vector intact, but returns an index vector describing the sorted order.

The Sort class has four sorting methods implemented:

References:

Author:
Tony Ottosson (Quicksort), Mark Dobossy (Introsort, Heapsort and Insertion Sort) and Adam Piatyszek (Sort class design, code clean-up)

Definition at line 100 of file sort.h.


Member Function Documentation

template<class T >
void itpp::Sort< T >::sort ( int  low,
int  high,
Vec< T > &  data 
) [inline]

Sorting function of a subset of a vector data.

Parameters:
low Start index of a subvector to be sorted
high End index of a subvector to be sorted
data Data vector, in which a part of it is to be sorted

Definition at line 216 of file sort.h.

References itpp::Vec< Num_T >::_data(), it_assert, it_error, itpp::levels2bits(), and itpp::Vec< Num_T >::size().

Referenced by itpp::Vec< Num_T >::sort().

template<class T >
ivec itpp::Sort< T >::sort_index ( int  low,
int  high,
const Vec< T > &  data 
) [inline]

Sorting function that returns a sorted index vector.

Parameters:
low Start index of a subvector to be sorted
high End index of a subvector to be sorted
data Data vector, in which a part of it is to be sorted

Definition at line 246 of file sort.h.

References itpp::Vec< Num_T >::_data(), it_assert, it_error, itpp::levels2bits(), and itpp::Vec< Num_T >::size().

Referenced by itpp::Vec< Num_T >::sort_index().

template<class T >
void itpp::Sort< T >::intro_sort ( int  low,
int  high,
int  max_depth,
Vec< T > &  data 
) [inline]

Introsort function of a subset of a vector data.

Parameters:
low Start index of a subvector to be sorted
high End index of a subvector to be sorted
max_depth Maximum recursion depth before switching to heap sort recommended value: log2 of the length of the data vector
data Data vector, in which a part of it is to be sorted
Note:
An introsort is not a stable sort (i.e. it may not maintain the relative order of elements with equal value.)

This function uses recurrence.

Definition at line 287 of file sort.h.

References itpp::Vec< Num_T >::_data(), it_assert, and itpp::Vec< Num_T >::size().

template<class T >
ivec itpp::Sort< T >::intro_sort_index ( int  low,
int  high,
int  max_depth,
const Vec< T > &  data 
) [inline]

Introsort function, which returns a sorted index vector.

Parameters:
low Start index of a subvector to be sorted
high End index of a subvector to be sorted
max_depth Maximum recursion depth before switching to heap sort recommended value: log2 of the length of the data vector
data Data vector, in which a part of it is to be sorted
Note:
An Introsort is not a stable sort (i.e. it may not maintain the relative order of elements with equal value.)

This function uses recurrence.

Definition at line 296 of file sort.h.

References itpp::Vec< Num_T >::_data(), it_assert, and itpp::Vec< Num_T >::size().


The documentation for this class was generated from the following file:
SourceForge Logo

Generated on Fri Aug 14 15:28:56 2009 for IT++ by Doxygen 1.5.9