void QuickSort::SubSort(int* array, int p , int r) { if(p< r) { int index=Partition(array,p , r); SubSort(array, p, index -1 ); SubSort(array, index +1 , r); } }
bool operator()(const typename Fnc::class_type& lhs, const typename Fnc::class_type& rhs) const { Fnc functor; if (functor(lhs) == functor(rhs)) return SubSort()(lhs,rhs); return SortPolicy<typename Fnc::return_type>()(functor(lhs), functor(rhs)); }
void QuickSort::sort(int* array, int size) { SubSort(array, 0, size -1); }
bool operator()(const T& lhs, const T& rhs) const { if ((lhs.*member_function)() == (rhs.*member_function)()) return SubSort()(lhs,rhs); return SortPolicy<return_type>()((lhs.*member_function)(), (rhs.*member_function)()); }
bool operator()(const T& lhs, const T& rhs) const { if (lhs.*member_variable == rhs.*member_variable) return SubSort()(lhs,rhs); return SortPolicy<return_type>()(lhs.*member_variable, rhs.*member_variable); }