Program Listing for File RadixSort.h
↰ Return to documentation for file (ADS/sort/RadixSort.h)
/*--------------------------------------------------------------------------*/
/*---------------------------- File RadixSort.h ----------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/
#ifndef __ADS_RadixSort
#define __ADS_RadixSort
/* self-identification: #endif constant */
/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/Contract.h"
#include "ADS/sort/InsertionSort.h"
#include "ADS/sort/Sorted.h"
#include <algorithm>
#include <array>
#include <bit>
#include <concepts>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <memory>
#include <string>
#include <type_traits>
#include <utility>
#include <vector>
/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/
namespace ADS {
template< class T >
concept RadixKey = ( std::is_integral_v< T > ||
std::is_floating_point_v< T > ) && ( sizeof( T ) <= 8 );
template< RadixKey T >
[[nodiscard]] auto radixKey( T x );
template< RadixKey T >
void radixSort( std::vector< T > & A );
template< class T , class K >
void radixSortBy( std::vector< T > & A , K key );
template< RadixKey T >
void americanFlagSort( std::vector< T > & A );
inline void msdRadixSort( std::vector< std::string > & A );
template< std::floating_point T >
void bucketSort( std::vector< T > & A );
/*--------------------------------------------------------------------------*/
} // end( namespace ADS )
/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/sort/impl/RadixSort.tpp"
/*--------------------------------------------------------------------------*/
#endif /* RadixSort.h included */
/*--------------------------------------------------------------------------*/
/*-------------------------- End File RadixSort.h --------------------------*/
/*--------------------------------------------------------------------------*/