minor changes

This commit is contained in:
Michele Caini
2019-06-17 16:14:20 +02:00
parent b14edbe1f4
commit 04dd1447ee

View File

@@ -54,18 +54,16 @@ struct insertion_sort {
*/
template<typename It, typename Compare = std::less<>>
void operator()(It first, It last, Compare compare = Compare{}) const {
if(first != last) {
auto it = first + 1;
if(first < last) {
for(auto it = first+1; it < last; ++it) {
auto value = std::move(*it);
auto pre = it;
while(it != last) {
auto pre = it++;
auto value = *pre;
for(; pre != first && compare(value, *(pre-1)); --pre) {
*pre = *(pre-1);
for(; pre > first && compare(value, *(pre-1)); --pre) {
*pre = std::move(*(pre-1));
}
*pre = value;
*pre = std::move(value);
}
}
}