最佳答案
c++标准库中的std::sort
算法(及其表兄弟std::partial_sort
和std::nth_element
)在大多数实现中都是一种更基本的排序算法的复杂和混合融合,例如选择排序、插入排序、快速排序、归并排序或堆排序。
这里和姐妹网站(如https://codereview.stackexchange.com/)上有许多与这些经典排序算法实现的错误、复杂性和其他方面有关的问题。大多数提供的实现都由原始循环组成,使用索引操作和具体类型,并且在正确性和效率方面分析起来通常不是简单的。
问题:如何使用现代c++实现上面提到的经典排序算法?
<algorithm>
的标准库算法构建块auto
、模板别名、透明比较器和多态lambda。笔记:
f(g(x));
或f(x); g(x);
或f(x) + g(x);
不是原始循环,下面的selection_sort
和insertion_sort
中的循环也不是原始循环。