tlx

Specialized Sorting Algorithms. More...

Namespaces

 tlx::parallel_mergesort_detail
 
 tlx::sort_strings_detail
 

Parallel Sorting Algorithms

template<bool Stable, typename RandomAccessIterator , typename Comparator >
void parallel_mergesort_base (RandomAccessIterator begin, RandomAccessIterator end, Comparator comp, size_t num_threads=std::thread::hardware_concurrency(), MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT)
 Parallel multiway mergesort main call. More...
 
template<typename RandomAccessIterator , typename Comparator = std::less< typename std::iterator_traits<RandomAccessIterator>::value_type>>
void parallel_mergesort (RandomAccessIterator begin, RandomAccessIterator end, Comparator comp=Comparator(), size_t num_threads=std::thread::hardware_concurrency(), MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT)
 Parallel multiway mergesort. More...
 
template<typename RandomAccessIterator , typename Comparator = std::less< typename std::iterator_traits<RandomAccessIterator>::value_type>>
void stable_parallel_mergesort (RandomAccessIterator begin, RandomAccessIterator end, Comparator comp=Comparator(), size_t num_threads=std::thread::hardware_concurrency(), MultiwayMergeSplittingAlgorithm mwmsa=MWMSA_DEFAULT)
 Stable parallel multiway mergesort. More...
 

String Sorting Algorithms

static void sort_strings (unsigned char **strings, size_t size, size_t memory=0)
 Sort a set of strings represented by C-style uint8_t* in place. More...
 
static void sort_strings (char **strings, size_t size, size_t memory=0)
 Sort a set of strings represented by C-style char* in place. More...
 
static void sort_strings (const unsigned char **strings, size_t size, size_t memory=0)
 Sort a set of strings represented by C-style uint8_t* in place. More...
 
static void sort_strings (const char **strings, size_t size, size_t memory=0)
 Sort a set of strings represented by C-style char* in place. More...
 
static void sort_strings (std::vector< char * > &strings, size_t memory=0)
 Sort a set of strings represented by C-style char* in place. More...
 
static void sort_strings (std::vector< unsigned char * > &strings, size_t memory=0)
 Sort a set of strings represented by C-style uint8_t* in place. More...
 
static void sort_strings (std::vector< const char * > &strings, size_t memory=0)
 Sort a set of strings represented by C-style char* in place. More...
 
static void sort_strings (std::vector< const unsigned char * > &strings, size_t memory=0)
 Sort a set of strings represented by C-style uint8_t* in place. More...
 
static void sort_strings (std::string *strings, size_t size, size_t memory=0)
 Sort a set of std::strings in place. More...
 
static void sort_strings (std::vector< std::string > &strings, size_t memory=0)
 Sort a vector of std::strings in place. More...
 
static void sort_strings_lcp (unsigned char **strings, size_t size, uint32_t *lcp, size_t memory=0)
 Sort a set of strings represented by C-style uint8_t* in place. More...
 
static void sort_strings_lcp (char **strings, size_t size, uint32_t *lcp, size_t memory=0)
 Sort a set of strings represented by C-style char* in place. More...
 
static void sort_strings_lcp (const unsigned char **strings, size_t size, uint32_t *lcp, size_t memory=0)
 Sort a set of strings represented by C-style uint8_t* in place. More...
 
static void sort_strings_lcp (const char **strings, size_t size, uint32_t *lcp, size_t memory=0)
 Sort a set of strings represented by C-style char* in place. More...
 
static void sort_strings_lcp (std::vector< char * > &strings, uint32_t *lcp, size_t memory=0)
 Sort a set of strings represented by C-style char* in place. More...
 
static void sort_strings_lcp (std::vector< unsigned char * > &strings, uint32_t *lcp, size_t memory=0)
 Sort a set of strings represented by C-style uint8_t* in place. More...
 
static void sort_strings_lcp (std::vector< const char * > &strings, uint32_t *lcp, size_t memory=0)
 Sort a set of strings represented by C-style char* in place. More...
 
static void sort_strings_lcp (std::vector< const unsigned char * > &strings, uint32_t *lcp, size_t memory=0)
 Sort a set of strings represented by C-style uint8_t* in place. More...
 
static void sort_strings_lcp (std::string *strings, size_t size, uint32_t *lcp, size_t memory=0)
 Sort a set of std::strings in place. More...
 
static void sort_strings_lcp (std::vector< std::string > &strings, uint32_t *lcp, size_t memory=0)
 Sort a vector of std::strings in place. More...
 
static void sort_strings_parallel (unsigned char **strings, size_t size, size_t memory=0)
 Sort a set of strings in parallel represented by C-style uint8_t* in place. More...
 
static void sort_strings_parallel (char **strings, size_t size, size_t memory=0)
 Sort a set of strings in parallel represented by C-style char* in place. More...
 
static void sort_strings_parallel (const unsigned char **strings, size_t size, size_t memory=0)
 Sort a set of strings in parallel represented by C-style uint8_t* in place. More...
 
static void sort_strings_parallel (const char **strings, size_t size, size_t memory=0)
 Sort a set of strings in parallel represented by C-style char* in place. More...
 
static void sort_strings_parallel (std::vector< char * > &strings, size_t memory=0)
 Sort a set of strings in parallel represented by C-style char* in place. More...
 
static void sort_strings_parallel (std::vector< unsigned char * > &strings, size_t memory=0)
 Sort a set of strings in parallel represented by C-style uint8_t* in place. More...
 
static void sort_strings_parallel (std::vector< const char * > &strings, size_t memory=0)
 Sort a set of strings in parallel represented by C-style char* in place. More...
 
static void sort_strings_parallel (std::vector< const unsigned char * > &strings, size_t memory=0)
 Sort a set of strings in parallel represented by C-style uint8_t* in place. More...
 
static void sort_strings_parallel (std::string *strings, size_t size, size_t memory=0)
 Sort a set of std::strings in place in parallel. More...
 
static void sort_strings_parallel (std::vector< std::string > &strings, size_t memory=0)
 Sort a vector of std::strings in place in parallel. More...
 
static void sort_strings_parallel_lcp (unsigned char **strings, size_t size, uint32_t *lcp, size_t memory=0)
 Sort a set of strings in parallel represented by C-style uint8_t* in place. More...
 
static void sort_strings_parallel_lcp (char **strings, size_t size, uint32_t *lcp, size_t memory=0)
 Sort a set of strings in parallel represented by C-style char* in place. More...
 
static void sort_strings_parallel_lcp (const unsigned char **strings, size_t size, uint32_t *lcp, size_t memory=0)
 Sort a set of strings in parallel represented by C-style uint8_t* in place. More...
 
static void sort_strings_parallel_lcp (const char **strings, size_t size, uint32_t *lcp, size_t memory=0)
 Sort a set of strings in parallel represented by C-style char* in place. More...
 
static void sort_strings_parallel_lcp (std::vector< char * > &strings, uint32_t *lcp, size_t memory=0)
 Sort a set of strings in parallel represented by C-style char* in place. More...
 
static void sort_strings_parallel_lcp (std::vector< unsigned char * > &strings, uint32_t *lcp, size_t memory=0)
 Sort a set of strings in parallel represented by C-style uint8_t* in place. More...
 
static void sort_strings_parallel_lcp (std::vector< const char * > &strings, uint32_t *lcp, size_t memory=0)
 Sort a set of strings in parallel represented by C-style char* in place. More...
 
static void sort_strings_parallel_lcp (std::vector< const unsigned char * > &strings, uint32_t *lcp, size_t memory=0)
 Sort a set of strings in parallel represented by C-style uint8_t* in place. More...
 
static void sort_strings_parallel_lcp (std::string *strings, size_t size, uint32_t *lcp, size_t memory=0)
 Sort a set of std::strings in place in parallel. More...
 
static void sort_strings_parallel_lcp (std::vector< std::string > &strings, uint32_t *lcp, size_t memory=0)
 Sort a vector of std::strings in place in parallel. More...
 

Detailed Description

Specialized Sorting Algorithms.

Function Documentation

void tlx::parallel_mergesort ( RandomAccessIterator  begin,
RandomAccessIterator  end,
Comparator  comp = Comparator(),
size_t  num_threads = std::thread::hardware_concurrency(),
MultiwayMergeSplittingAlgorithm  mwmsa = MWMSA_DEFAULT 
)

Parallel multiway mergesort.

Parameters
beginBegin iterator of sequence.
endEnd iterator of sequence.
compComparator.
num_threadsNumber of threads to use.
mwmsaMultiwayMergeSplittingAlgorithm to use.

Definition at line 361 of file parallel_mergesort.hpp.

void tlx::parallel_mergesort_base ( RandomAccessIterator  begin,
RandomAccessIterator  end,
Comparator  comp,
size_t  num_threads = std::thread::hardware_concurrency(),
MultiwayMergeSplittingAlgorithm  mwmsa = MWMSA_DEFAULT 
)

Parallel multiway mergesort main call.

Parameters
beginBegin iterator of sequence.
endEnd iterator of sequence.
compComparator.
num_threadsNumber of threads to use.
mwmsaMultiwayMergeSplittingAlgorithm to use.
Template Parameters
StableStable sorting.

Definition at line 280 of file parallel_mergesort.hpp.

static void tlx::sort_strings ( unsigned char **  strings,
size_t  size,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style uint8_t* in place.

If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 40 of file strings.hpp.

static void tlx::sort_strings ( char **  strings,
size_t  size,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 55 of file strings.hpp.

static void tlx::sort_strings ( const unsigned char **  strings,
size_t  size,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style uint8_t* in place.

If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 67 of file strings.hpp.

static void tlx::sort_strings ( const char **  strings,
size_t  size,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 83 of file strings.hpp.

static void tlx::sort_strings ( std::vector< char * > &  strings,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 98 of file strings.hpp.

static void tlx::sort_strings ( std::vector< unsigned char * > &  strings,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style uint8_t* in place.

If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 109 of file strings.hpp.

static void tlx::sort_strings ( std::vector< const char * > &  strings,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 121 of file strings.hpp.

static void tlx::sort_strings ( std::vector< const unsigned char * > &  strings,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style uint8_t* in place.

If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 132 of file strings.hpp.

static void tlx::sort_strings ( std::string *  strings,
size_t  size,
size_t  memory = 0 
)
inlinestatic

Sort a set of std::strings in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 147 of file strings.hpp.

static void tlx::sort_strings ( std::vector< std::string > &  strings,
size_t  memory = 0 
)
inlinestatic

Sort a vector of std::strings in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 162 of file strings.hpp.

static void tlx::sort_strings_lcp ( unsigned char **  strings,
size_t  size,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style uint8_t* in place.

If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 177 of file strings.hpp.

static void tlx::sort_strings_lcp ( char **  strings,
size_t  size,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 194 of file strings.hpp.

static void tlx::sort_strings_lcp ( const unsigned char **  strings,
size_t  size,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style uint8_t* in place.

If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 207 of file strings.hpp.

static void tlx::sort_strings_lcp ( const char **  strings,
size_t  size,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 224 of file strings.hpp.

static void tlx::sort_strings_lcp ( std::vector< char * > &  strings,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 240 of file strings.hpp.

static void tlx::sort_strings_lcp ( std::vector< unsigned char * > &  strings,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style uint8_t* in place.

If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 252 of file strings.hpp.

static void tlx::sort_strings_lcp ( std::vector< const char * > &  strings,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 265 of file strings.hpp.

static void tlx::sort_strings_lcp ( std::vector< const unsigned char * > &  strings,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings represented by C-style uint8_t* in place.

If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 277 of file strings.hpp.

static void tlx::sort_strings_lcp ( std::string *  strings,
size_t  size,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of std::strings in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 292 of file strings.hpp.

static void tlx::sort_strings_lcp ( std::vector< std::string > &  strings,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a vector of std::strings in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! If the memory limit is non zero, possibly slower algorithms will be selected to stay within the memory limit.

Definition at line 309 of file strings.hpp.

static void tlx::sort_strings_parallel ( unsigned char **  strings,
size_t  size,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style uint8_t* in place.

The memory limit is currently not used.

Definition at line 37 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel ( char **  strings,
size_t  size,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 52 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel ( const unsigned char **  strings,
size_t  size,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style uint8_t* in place.

The memory limit is currently not used.

Definition at line 63 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel ( const char **  strings,
size_t  size,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 78 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel ( std::vector< char * > &  strings,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 93 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel ( std::vector< unsigned char * > &  strings,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style uint8_t* in place.

The memory limit is currently not used.

Definition at line 103 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel ( std::vector< const char * > &  strings,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 115 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel ( std::vector< const unsigned char * > &  strings,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style uint8_t* in place.

The memory limit is currently not used.

Definition at line 126 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel ( std::string *  strings,
size_t  size,
size_t  memory = 0 
)
inlinestatic

Sort a set of std::strings in place in parallel.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 140 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel ( std::vector< std::string > &  strings,
size_t  memory = 0 
)
inlinestatic

Sort a vector of std::strings in place in parallel.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 155 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel_lcp ( unsigned char **  strings,
size_t  size,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style uint8_t* in place.

The memory limit is currently not used.

Definition at line 170 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel_lcp ( char **  strings,
size_t  size,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 186 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel_lcp ( const unsigned char **  strings,
size_t  size,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style uint8_t* in place.

The memory limit is currently not used.

Definition at line 198 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel_lcp ( const char **  strings,
size_t  size,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 214 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel_lcp ( std::vector< char * > &  strings,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 229 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel_lcp ( std::vector< unsigned char * > &  strings,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style uint8_t* in place.

The memory limit is currently not used.

Definition at line 241 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel_lcp ( std::vector< const char * > &  strings,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style char* in place.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 254 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel_lcp ( std::vector< const unsigned char * > &  strings,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of strings in parallel represented by C-style uint8_t* in place.

The memory limit is currently not used.

Definition at line 266 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel_lcp ( std::string *  strings,
size_t  size,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a set of std::strings in place in parallel.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 281 of file strings_parallel.hpp.

static void tlx::sort_strings_parallel_lcp ( std::vector< std::string > &  strings,
uint32_t *  lcp,
size_t  memory = 0 
)
inlinestatic

Sort a vector of std::strings in place in parallel.

The strings are sorted as unsigned 8-bit characters, not signed characters! The memory limit is currently not used.

Definition at line 297 of file strings_parallel.hpp.

void tlx::stable_parallel_mergesort ( RandomAccessIterator  begin,
RandomAccessIterator  end,
Comparator  comp = Comparator(),
size_t  num_threads = std::thread::hardware_concurrency(),
MultiwayMergeSplittingAlgorithm  mwmsa = MWMSA_DEFAULT 
)

Stable parallel multiway mergesort.

Parameters
beginBegin iterator of sequence.
endEnd iterator of sequence.
compComparator.
num_threadsNumber of threads to use.
mwmsaMultiwayMergeSplittingAlgorithm to use.

Definition at line 384 of file parallel_mergesort.hpp.