#ifndef CA_UWATERLOO_ALUMNI_DWHARDER_BUCKET_SORT_POINTER #define CA_UWATERLOO_ALUMNI_DWHARDER_BUCKET_SORT_POINTER namespace Sorting_algorithms { namespace Bucket_sort { class Pointer { public: static void sort( int *const array, int const n, int const m ) { sort( array, array + n - 1, m ); } static void sort( int *array, int lower, int upper, int const m ) { sort( array + lower, array + upper, m ); } static void sort( int *lower, int *upper, int const m ) { int *bucket = new int[m]; for ( int i = 0; i < m; ++i ) { bucket[i] = 0; } for ( int *ptr = lower; ptr <= upper; ++ptr ) { ++( bucket[*ptr] ); } for ( int i = 0; i < m; ++i ) { for ( int j = 0; j < bucket[i]; ++j ) { *(lower++) = i; } } delete [] bucket; } }; } } #endif