itpp::Sort< T > Class Template Reference

Class for sorting of vectors. More...

#include <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)

Member Function Documentation

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.

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.

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

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

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

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().


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

Generated on Tue Jun 2 10:02:19 2009 for mixpp by  doxygen 1.5.8