Program Listing for File SequenceAlgorithms.h
↰ Return to documentation for file (ADS/sequence/SequenceAlgorithms.h)
/*--------------------------------------------------------------------------*/
/*----------------------- File SequenceAlgorithms.h ------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/
#ifndef __ADS_SequenceAlgorithms
#define __ADS_SequenceAlgorithms
/* self-identification: #endif constant */
/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/ADT.h"
#include "ADS/Contract.h"
#include "ADS/sort/Sorted.h"
#include <cstddef>
#include <utility>
/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/
namespace ADS {
/*--------------------------------------------------------------------------*/
/*------------------------------- SEARCH -----------------------------------*/
/*--------------------------------------------------------------------------*/
template< Sequence S >
long search( const S & s , const typename S::Item & v );
template< Sequence S >
long searchOrdered( const S & s , const typename S::Item & v );
template< Sequence S >
std::pair< typename S::Pos , bool > lowerBound( const S & s ,
const typename S::Item & v );
template< Sequence S >
S sublist( const S & s , typename S::Pos p , typename S::Pos q );
/*--------------------------------------------------------------------------*/
/*------------------------------- ORDER ------------------------------------*/
/*--------------------------------------------------------------------------*/
enum class Order { EMPTY , CONSTANT , INCREASING , DECREASING ,
NONDECREASING , NONINCREASING , NONE };
template< Sequence S >
Order order( const S & s );
/*--------------------------------------------------------------------------*/
/*------------------------------- SORTING ----------------------------------*/
/*--------------------------------------------------------------------------*/
template< Sequence S >
void bubbleSort( S & s );
template< Sequence S >
S mergeSorted( const S & a , const S & b );
template< Sequence S >
void naturalMergeSort( S & s , long * passes = nullptr );
template< Sequence S >
void removeDuplicates( S & s );
/*--------------------------------------------------------------------------*/
} // end( namespace ADS )
/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/sequence/impl/SequenceAlgorithms.tpp"
/*--------------------------------------------------------------------------*/
#endif /* SequenceAlgorithms.h included */
/*--------------------------------------------------------------------------*/
/*--------------------- End File SequenceAlgorithms.h ----------------------*/
/*--------------------------------------------------------------------------*/