#include "oct-sort.h"
Classes | |
struct | MergeState |
struct | s_slice |
Public Types | |
typedef bool(* | compare_fcn_type )(typename ref_param< T >::type, typename ref_param< T >::type) |
Public Member Functions | |
octave_sort (void) | |
octave_sort (compare_fcn_type) | |
~octave_sort (void) | |
bool | is_sorted (const T *data, octave_idx_type nel) |
bool | is_sorted_rows (const T *data, octave_idx_type rows, octave_idx_type cols) |
octave_idx_type | lookup (const T *data, octave_idx_type nel, const T &value) |
void | lookup (const T *data, octave_idx_type nel, const T *values, octave_idx_type nvalues, octave_idx_type *idx) |
void | lookup_sorted (const T *data, octave_idx_type nel, const T *values, octave_idx_type nvalues, octave_idx_type *idx, bool rev=false) |
void | nth_element (T *data, octave_idx_type nel, octave_idx_type lo, octave_idx_type up=-1) |
void | set_compare (compare_fcn_type comp) |
void | set_compare (sortmode mode) |
template<> | |
void | sort (bool *data, octave_idx_type nel, std::greater< bool >) |
void | sort (T *data, octave_idx_type nel) |
template<> | |
void | sort (bool *data, octave_idx_type *idx, octave_idx_type nel, std::greater< bool >) |
template<> | |
void | sort (bool *data, octave_idx_type nel, std::less< bool >) |
void | sort (T *data, octave_idx_type *idx, octave_idx_type nel) |
template<> | |
void | sort (bool *data, octave_idx_type *idx, octave_idx_type nel, std::less< bool >) |
void | sort_rows (const T *data, octave_idx_type *idx, octave_idx_type rows, octave_idx_type cols) |
Static Public Member Functions | |
static bool | ascending_compare (typename ref_param< T >::type, typename ref_param< T >::type) |
static bool | descending_compare (typename ref_param< T >::type, typename ref_param< T >::type) |
Private Member Functions | |
octave_sort (const octave_sort &) | |
template<class Comp > | |
void | binarysort (T *data, octave_idx_type *idx, octave_idx_type nel, octave_idx_type start, Comp comp) |
template<class Comp > | |
void | binarysort (T *data, octave_idx_type nel, octave_idx_type start, Comp comp) |
template<class Comp > | |
octave_idx_type | count_run (T *lo, octave_idx_type n, bool &descending, Comp comp) |
template<class Comp > | |
octave_idx_type | gallop_left (T key, T *a, octave_idx_type n, octave_idx_type hint, Comp comp) |
template<class Comp > | |
octave_idx_type | gallop_right (T key, T *a, octave_idx_type n, octave_idx_type hint, Comp comp) |
template<class Comp > | |
bool | is_sorted (const T *data, octave_idx_type nel, Comp comp) |
template<class Comp > | |
bool | is_sorted_rows (const T *data, octave_idx_type rows, octave_idx_type cols, Comp comp) |
template<class Comp > | |
void | lookup (const T *data, octave_idx_type nel, const T *values, octave_idx_type nvalues, octave_idx_type *idx, Comp comp) |
template<class Comp > | |
octave_idx_type | lookup (const T *data, octave_idx_type nel, const T &value, Comp comp) |
template<class Comp > | |
void | lookup_sorted (const T *data, octave_idx_type nel, const T *values, octave_idx_type nvalues, octave_idx_type *idx, bool rev, Comp comp) |
template<class Comp > | |
int | merge_at (octave_idx_type i, T *data, Comp comp) |
template<class Comp > | |
int | merge_at (octave_idx_type i, T *data, octave_idx_type *idx, Comp comp) |
template<class Comp > | |
int | merge_collapse (T *data, Comp comp) |
template<class Comp > | |
int | merge_collapse (T *data, octave_idx_type *idx, Comp comp) |
octave_idx_type | merge_compute_minrun (octave_idx_type n) |
template<class Comp > | |
int | merge_force_collapse (T *data, octave_idx_type *idx, Comp comp) |
template<class Comp > | |
int | merge_force_collapse (T *data, Comp comp) |
template<class Comp > | |
int | merge_hi (T *pa, octave_idx_type na, T *pb, octave_idx_type nb, Comp comp) |
template<class Comp > | |
int | merge_hi (T *pa, octave_idx_type *ipa, octave_idx_type na, T *pb, octave_idx_type *ipb, octave_idx_type nb, Comp comp) |
template<class Comp > | |
int | merge_lo (T *pa, octave_idx_type *ipa, octave_idx_type na, T *pb, octave_idx_type *ipb, octave_idx_type nb, Comp comp) |
template<class Comp > | |
int | merge_lo (T *pa, octave_idx_type na, T *pb, octave_idx_type nb, Comp comp) |
template<class Comp > | |
void | nth_element (T *data, octave_idx_type nel, octave_idx_type lo, octave_idx_type up, Comp comp) |
octave_sort & | operator= (const octave_sort &) |
template<class Comp > | |
void | sort (T *data, octave_idx_type *idx, octave_idx_type nel, Comp comp) |
template<class Comp > | |
void | sort (T *data, octave_idx_type nel, Comp comp) |
template<class Comp > | |
void | sort_rows (const T *data, octave_idx_type *idx, octave_idx_type rows, octave_idx_type cols, Comp comp) |
Private Attributes | |
compare_fcn_type | compare |
MergeState * | ms |
Definition at line 106 of file oct-sort.h.
typedef bool(* octave_sort< T >::compare_fcn_type)(typename ref_param< T >::type, typename ref_param< T >::type) |
Definition at line 111 of file oct-sort.h.
octave_sort< T >::octave_sort | ( | void | ) |
Definition at line 120 of file oct-sort.cc.
octave_sort< T >::octave_sort | ( | compare_fcn_type | comp | ) |
Definition at line 126 of file oct-sort.cc.
octave_sort< T >::~octave_sort | ( | void | ) |
Definition at line 132 of file oct-sort.cc.
References octave_sort< T >::ms.
octave_sort< T >::octave_sort | ( | const octave_sort< T > & | ) | [private] |
bool octave_sort< T >::ascending_compare | ( | typename ref_param< T >::type | x, | |
typename ref_param< T >::type | y | |||
) | [static] |
Definition at line 1945 of file oct-sort.cc.
Referenced by octave_sort< T >::is_sorted(), octave_sort< T >::is_sorted_rows(), octave_sort< T >::lookup(), octave_sort< T >::lookup_sorted(), octave_sort< T >::nth_element(), octave_sort< T >::sort(), and octave_sort< T >::sort_rows().
void octave_sort< T >::binarysort | ( | T * | data, | |
octave_idx_type | nel, | |||
octave_idx_type | start, | |||
Comp | comp | |||
) | [private] |
Definition at line 152 of file oct-sort.cc.
Referenced by octave_sort< T >::sort().
void octave_sort< T >::binarysort | ( | T * | data, | |
octave_idx_type * | idx, | |||
octave_idx_type | nel, | |||
octave_idx_type | start, | |||
Comp | comp | |||
) | [private] |
Definition at line 196 of file oct-sort.cc.
octave_idx_type octave_sort< T >::count_run | ( | T * | lo, | |
octave_idx_type | n, | |||
bool & | descending, | |||
Comp | comp | |||
) | [private] |
Definition at line 262 of file oct-sort.cc.
Referenced by octave_sort< T >::sort().
bool octave_sort< T >::descending_compare | ( | typename ref_param< T >::type | x, | |
typename ref_param< T >::type | y | |||
) | [static] |
Definition at line 1953 of file oct-sort.cc.
Referenced by octave_sort< T >::is_sorted(), octave_sort< T >::is_sorted_rows(), octave_sort< T >::lookup(), Array< T >::lookup(), octave_sort< T >::lookup_sorted(), octave_sort< T >::nth_element(), octave_sort< T >::sort(), and octave_sort< T >::sort_rows().
octave_idx_type octave_sort< T >::gallop_left | ( | T | key, | |
T * | a, | |||
octave_idx_type | n, | |||
octave_idx_type | hint, | |||
Comp | comp | |||
) | [private] |
Definition at line 321 of file oct-sort.cc.
Referenced by octave_sort< T >::merge_at(), octave_sort< T >::merge_hi(), and octave_sort< T >::merge_lo().
octave_idx_type octave_sort< T >::gallop_right | ( | T | key, | |
T * | a, | |||
octave_idx_type | n, | |||
octave_idx_type | hint, | |||
Comp | comp | |||
) | [private] |
Definition at line 415 of file oct-sort.cc.
Referenced by octave_sort< T >::merge_at(), octave_sort< T >::merge_hi(), and octave_sort< T >::merge_lo().
bool octave_sort< T >::is_sorted | ( | const T * | data, | |
octave_idx_type | nel, | |||
Comp | comp | |||
) | [private] |
Definition at line 1543 of file oct-sort.cc.
References next.
bool octave_sort< T >::is_sorted | ( | const T * | data, | |
octave_idx_type | nel | |||
) |
Definition at line 1563 of file oct-sort.cc.
References octave_sort< T >::ascending_compare(), octave_sort< T >::compare, and octave_sort< T >::descending_compare().
Referenced by Array< T >::is_sorted(), and octave_sort< T >::is_sorted_rows().
bool octave_sort< T >::is_sorted_rows | ( | const T * | data, | |
octave_idx_type | rows, | |||
octave_idx_type | cols, | |||
Comp | comp | |||
) | [private] |
Definition at line 1670 of file oct-sort.cc.
References octave_sort< T >::is_sorted().
bool octave_sort< T >::is_sorted_rows | ( | const T * | data, | |
octave_idx_type | rows, | |||
octave_idx_type | cols | |||
) |
Definition at line 1726 of file oct-sort.cc.
References octave_sort< T >::ascending_compare(), octave_sort< T >::compare, and octave_sort< T >::descending_compare().
Referenced by Array< T >::is_sorted_rows().
octave_idx_type octave_sort< T >::lookup | ( | const T * | data, | |
octave_idx_type | nel, | |||
const T & | value | |||
) |
Definition at line 1770 of file oct-sort.cc.
References octave_sort< T >::ascending_compare(), octave_sort< T >::compare, and octave_sort< T >::descending_compare().
Referenced by octave_sort< T >::lookup(), and Array< T >::lookup().
void octave_sort< T >::lookup | ( | const T * | data, | |
octave_idx_type | nel, | |||
const T * | values, | |||
octave_idx_type | nvalues, | |||
octave_idx_type * | idx | |||
) |
Definition at line 1806 of file oct-sort.cc.
References octave_sort< T >::ascending_compare(), octave_sort< T >::compare, octave_sort< T >::descending_compare(), and octave_sort< T >::lookup().
octave_idx_type octave_sort< T >::lookup | ( | const T * | data, | |
octave_idx_type | nel, | |||
const T & | value, | |||
Comp | comp | |||
) | [private] |
Definition at line 1751 of file oct-sort.cc.
void octave_sort< T >::lookup | ( | const T * | data, | |
octave_idx_type | nel, | |||
const T * | values, | |||
octave_idx_type | nvalues, | |||
octave_idx_type * | idx, | |||
Comp | comp | |||
) | [private] |
Definition at line 1793 of file oct-sort.cc.
References octave_sort< T >::lookup().
void octave_sort< T >::lookup_sorted | ( | const T * | data, | |
octave_idx_type | nel, | |||
const T * | values, | |||
octave_idx_type | nvalues, | |||
octave_idx_type * | idx, | |||
bool | rev, | |||
Comp | comp | |||
) | [private] |
Definition at line 1826 of file oct-sort.cc.
void octave_sort< T >::lookup_sorted | ( | const T * | data, | |
octave_idx_type | nel, | |||
const T * | values, | |||
octave_idx_type | nvalues, | |||
octave_idx_type * | idx, | |||
bool | rev = false | |||
) |
Definition at line 1878 of file oct-sort.cc.
References octave_sort< T >::ascending_compare(), octave_sort< T >::compare, and octave_sort< T >::descending_compare().
Referenced by Array< T >::lookup().
int octave_sort< T >::merge_at | ( | octave_idx_type | i, | |
T * | data, | |||
Comp | comp | |||
) | [private] |
Definition at line 1147 of file oct-sort.cc.
References octave_sort< T >::s_slice::base, octave_sort< T >::gallop_left(), octave_sort< T >::gallop_right(), octave_sort< T >::s_slice::len, octave_sort< T >::merge_hi(), octave_sort< T >::merge_lo(), octave_sort< T >::ms, octave_sort< T >::MergeState::n, and octave_sort< T >::MergeState::pending.
Referenced by octave_sort< T >::merge_collapse(), and octave_sort< T >::merge_force_collapse().
int octave_sort< T >::merge_at | ( | octave_idx_type | i, | |
T * | data, | |||
octave_idx_type * | idx, | |||
Comp | comp | |||
) | [private] |
Definition at line 1198 of file oct-sort.cc.
References octave_sort< T >::s_slice::base, octave_sort< T >::gallop_left(), octave_sort< T >::gallop_right(), octave_sort< T >::s_slice::len, octave_sort< T >::merge_hi(), octave_sort< T >::merge_lo(), octave_sort< T >::ms, octave_sort< T >::MergeState::n, and octave_sort< T >::MergeState::pending.
int octave_sort< T >::merge_collapse | ( | T * | data, | |
Comp | comp | |||
) | [private] |
Definition at line 1262 of file oct-sort.cc.
References octave_sort< T >::merge_at(), octave_sort< T >::ms, octave_sort< T >::MergeState::n, and octave_sort< T >::MergeState::pending.
Referenced by octave_sort< T >::sort().
int octave_sort< T >::merge_collapse | ( | T * | data, | |
octave_idx_type * | idx, | |||
Comp | comp | |||
) | [private] |
Definition at line 1291 of file oct-sort.cc.
References octave_sort< T >::merge_at(), octave_sort< T >::ms, octave_sort< T >::MergeState::n, and octave_sort< T >::MergeState::pending.
octave_idx_type octave_sort< T >::merge_compute_minrun | ( | octave_idx_type | n | ) | [private] |
Definition at line 1372 of file oct-sort.cc.
Referenced by octave_sort< T >::sort().
int octave_sort< T >::merge_force_collapse | ( | T * | data, | |
Comp | comp | |||
) | [private] |
Definition at line 1325 of file oct-sort.cc.
References octave_sort< T >::merge_at(), octave_sort< T >::ms, octave_sort< T >::MergeState::n, and octave_sort< T >::MergeState::pending.
Referenced by octave_sort< T >::sort().
int octave_sort< T >::merge_force_collapse | ( | T * | data, | |
octave_idx_type * | idx, | |||
Comp | comp | |||
) | [private] |
Definition at line 1344 of file oct-sort.cc.
References octave_sort< T >::merge_at(), octave_sort< T >::ms, octave_sort< T >::MergeState::n, and octave_sort< T >::MergeState::pending.
int octave_sort< T >::merge_hi | ( | T * | pa, | |
octave_idx_type | na, | |||
T * | pb, | |||
octave_idx_type | nb, | |||
Comp | comp | |||
) | [private] |
Definition at line 860 of file oct-sort.cc.
References octave_sort< T >::MergeState::a, octave_sort< T >::gallop_left(), octave_sort< T >::gallop_right(), octave_sort< T >::MergeState::getmem(), MIN_GALLOP, octave_sort< T >::MergeState::min_gallop, and octave_sort< T >::ms.
Referenced by octave_sort< T >::merge_at().
int octave_sort< T >::merge_hi | ( | T * | pa, | |
octave_idx_type * | ipa, | |||
octave_idx_type | na, | |||
T * | pb, | |||
octave_idx_type * | ipb, | |||
octave_idx_type | nb, | |||
Comp | comp | |||
) | [private] |
Definition at line 997 of file oct-sort.cc.
References octave_sort< T >::MergeState::a, octave_sort< T >::gallop_left(), octave_sort< T >::gallop_right(), octave_sort< T >::MergeState::getmemi(), octave_sort< T >::MergeState::ia, MIN_GALLOP, octave_sort< T >::MergeState::min_gallop, and octave_sort< T >::ms.
int octave_sort< T >::merge_lo | ( | T * | pa, | |
octave_idx_type | na, | |||
T * | pb, | |||
octave_idx_type | nb, | |||
Comp | comp | |||
) | [private] |
Definition at line 578 of file oct-sort.cc.
References octave_sort< T >::MergeState::a, octave_sort< T >::gallop_left(), octave_sort< T >::gallop_right(), octave_sort< T >::MergeState::getmem(), MIN_GALLOP, octave_sort< T >::MergeState::min_gallop, and octave_sort< T >::ms.
Referenced by octave_sort< T >::merge_at().
int octave_sort< T >::merge_lo | ( | T * | pa, | |
octave_idx_type * | ipa, | |||
octave_idx_type | na, | |||
T * | pb, | |||
octave_idx_type * | ipb, | |||
octave_idx_type | nb, | |||
Comp | comp | |||
) | [private] |
Definition at line 713 of file oct-sort.cc.
References octave_sort< T >::MergeState::a, octave_sort< T >::gallop_left(), octave_sort< T >::gallop_right(), octave_sort< T >::MergeState::getmemi(), octave_sort< T >::MergeState::ia, MIN_GALLOP, octave_sort< T >::MergeState::min_gallop, and octave_sort< T >::ms.
void octave_sort< T >::nth_element | ( | T * | data, | |
octave_idx_type | nel, | |||
octave_idx_type | lo, | |||
octave_idx_type | up, | |||
Comp | comp | |||
) | [private] |
Definition at line 1898 of file oct-sort.cc.
References octave_sort< T >::nth_element().
void octave_sort< T >::nth_element | ( | T * | data, | |
octave_idx_type | nel, | |||
octave_idx_type | lo, | |||
octave_idx_type | up = -1 | |||
) |
Definition at line 1924 of file oct-sort.cc.
References octave_sort< T >::ascending_compare(), octave_sort< T >::compare, and octave_sort< T >::descending_compare().
Referenced by octave_sort< T >::nth_element(), and Array< T >::nth_element().
octave_sort& octave_sort< T >::operator= | ( | const octave_sort< T > & | ) | [private] |
void octave_sort< T >::set_compare | ( | sortmode | mode | ) |
Definition at line 139 of file oct-sort.cc.
References ASCENDING, octave_sort< T >::compare, and DESCENDING.
void octave_sort< T >::set_compare | ( | compare_fcn_type | comp | ) | [inline] |
Definition at line 120 of file oct-sort.h.
Referenced by Array< T >::is_sorted(), Array< T >::is_sorted_rows(), Array< T >::lookup(), Array< T >::nth_element(), Sparse< T >::sort(), Array< T >::sort(), idx_vector::idx_vector_rep::sort_idx(), and idx_vector::idx_vector_rep::sort_uniq_clone().
void octave_sort< bool >::sort | ( | bool * | data, | |
octave_idx_type | nel, | |||
std::less< bool > | ||||
) |
Definition at line 76 of file Array-b.cc.
void octave_sort< bool >::sort | ( | bool * | data, | |
octave_idx_type * | idx, | |||
octave_idx_type | nel, | |||
std::greater< bool > | ||||
) |
Definition at line 100 of file Array-b.cc.
void octave_sort< T >::sort | ( | T * | data, | |
octave_idx_type * | idx, | |||
octave_idx_type | nel, | |||
Comp | comp | |||
) | [private] |
Definition at line 1446 of file oct-sort.cc.
References octave_sort< T >::s_slice::base, octave_sort< T >::binarysort(), octave_sort< T >::count_run(), octave_sort< T >::MergeState::getmemi(), octave_sort< T >::s_slice::len, MAX_MERGE_PENDING, octave_sort< T >::merge_collapse(), octave_sort< T >::merge_compute_minrun(), octave_sort< T >::merge_force_collapse(), octave_sort< T >::ms, octave_sort< T >::MergeState::n, octave_sort< T >::MergeState::pending, and octave_sort< T >::MergeState::reset().
void octave_sort< T >::sort | ( | T * | data, | |
octave_idx_type | nel, | |||
Comp | comp | |||
) | [private] |
Definition at line 1388 of file oct-sort.cc.
References octave_sort< T >::s_slice::base, octave_sort< T >::binarysort(), octave_sort< T >::count_run(), octave_sort< T >::MergeState::getmem(), octave_sort< T >::s_slice::len, MAX_MERGE_PENDING, octave_sort< T >::merge_collapse(), octave_sort< T >::merge_compute_minrun(), octave_sort< T >::merge_force_collapse(), octave_sort< T >::ms, octave_sort< T >::MergeState::n, octave_sort< T >::MergeState::pending, and octave_sort< T >::MergeState::reset().
void octave_sort< bool >::sort | ( | bool * | data, | |
octave_idx_type * | idx, | |||
octave_idx_type | nel, | |||
std::less< bool > | ||||
) |
Definition at line 92 of file Array-b.cc.
void octave_sort< T >::sort | ( | T * | data, | |
octave_idx_type | nel | |||
) |
Definition at line 1507 of file oct-sort.cc.
References octave_sort< T >::ascending_compare(), octave_sort< T >::compare, and octave_sort< T >::descending_compare().
Referenced by dmsolve_extract(), dmsolve_insert(), octinternal_do_mul_colpm_sm(), string_vector::sort(), Sparse< T >::sort(), octave_sort< T >::sort(), Array< T >::sort(), idx_vector::idx_vector_rep::sort_idx(), octave_sort< T >::sort_rows(), and idx_vector::idx_vector_rep::sort_uniq_clone().
void octave_sort< T >::sort | ( | T * | data, | |
octave_idx_type * | idx, | |||
octave_idx_type | nel | |||
) |
Definition at line 1525 of file oct-sort.cc.
References octave_sort< T >::ascending_compare(), octave_sort< T >::compare, octave_sort< T >::descending_compare(), and octave_sort< T >::sort().
void octave_sort< bool >::sort | ( | bool * | data, | |
octave_idx_type | nel, | |||
std::greater< bool > | ||||
) |
Definition at line 84 of file Array-b.cc.
void octave_sort< T >::sort_rows | ( | const T * | data, | |
octave_idx_type * | idx, | |||
octave_idx_type | rows, | |||
octave_idx_type | cols | |||
) |
Definition at line 1651 of file oct-sort.cc.
References octave_sort< T >::ascending_compare(), octave_sort< T >::compare, and octave_sort< T >::descending_compare().
Referenced by Array< T >::sort_rows_idx().
void octave_sort< T >::sort_rows | ( | const T * | data, | |
octave_idx_type * | idx, | |||
octave_idx_type | rows, | |||
octave_idx_type | cols, | |||
Comp | comp | |||
) | [private] |
Definition at line 1593 of file oct-sort.cc.
References OCTAVE_LOCAL_BUFFER, and octave_sort< T >::sort().
compare_fcn_type octave_sort< T >::compare [private] |
Definition at line 229 of file oct-sort.h.
Referenced by octave_sort< T >::is_sorted(), octave_sort< T >::is_sorted_rows(), octave_sort< T >::lookup(), octave_sort< T >::lookup_sorted(), octave_sort< T >::nth_element(), octave_sort< T >::set_compare(), octave_sort< T >::sort(), and octave_sort< T >::sort_rows().
MergeState* octave_sort< T >::ms [private] |
Definition at line 231 of file oct-sort.h.
Referenced by octave_sort< T >::merge_at(), octave_sort< T >::merge_collapse(), octave_sort< T >::merge_force_collapse(), octave_sort< T >::merge_hi(), octave_sort< T >::merge_lo(), octave_sort< T >::sort(), and octave_sort< T >::~octave_sort().