Akumuli
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends
sort.h
1 
22 #pragma once
23 #include <algorithm>
24 
25 namespace Akumuli {
26 
27 
32 template <typename TIter, typename TComp>
33 void insertion_sort(TIter begin, TIter end, TComp const& cmp) {
34  if (begin == end)
35  return;
36 
37  for (auto i = begin + 1; i != end; ++i) {
38  if (cmp(*i, *begin)) {
39  auto value = *i;
40  std::copy_backward(begin, i, i + 1);
41  *begin = value;
42  } else {
43  auto val = *i;
44  auto next = i - 1;
45  while (cmp(val, *next)) {
46  *i = *next;
47  i = next;
48  --next;
49  }
50  *i = val;
51  }
52  }
53 }
54 }
void insertion_sort(TIter begin, TIter end, TComp const &cmp)
Definition: sort.h:33