move quicksort to internal namespace

master
Daniel Kolesa 2015-04-18 22:43:20 +01:00
parent 4850e2454f
commit f9a298c1b8
1 changed files with 14 additions and 21 deletions

View File

@ -47,7 +47,6 @@ namespace octa {
U comp; U comp;
bool operator()(const T &v) const { return comp(v, val); } bool operator()(const T &v) const { return comp(v, val); }
}; };
}
template<typename R, typename C> template<typename R, typename C>
void quicksort(R range, C compare) { void quicksort(R range, C compare) {
@ -57,23 +56,17 @@ namespace octa {
} }
typename RangeTraits<R>::reference p = range[range.length() / 2]; typename RangeTraits<R>::reference p = range[range.length() / 2];
swap(p, range.last()); swap(p, range.last());
R r = partition(range, internal::UnaryCompare<decltype(p), C>{ R r = partition(range, UnaryCompare<decltype(p), C>{ p, compare });
p, compare
});
R l = range.slice(0, range.length() - r.length()); R l = range.slice(0, range.length() - r.length());
swap(r.first(), r.last()); swap(r.first(), r.last());
quicksort(l, compare); quicksort(l, compare);
quicksort(r, compare); quicksort(r, compare);
} }
template<typename R>
void quicksort(R range) {
quicksort(range, Less<typename RangeTraits<R>::value>());
} }
template<typename R, typename C> template<typename R, typename C>
void sort(R range, C compare) { void sort(R range, C compare) {
quicksort(range, compare); internal::quicksort(range, compare);
} }
template<typename R> template<typename R>