c ++中的sort函数如何工作?

时间:2013-02-04 14:48:26

标签: c++ sorting

在以下代码中,sort()函数如何工作? 例如,如果我们有一个数组:

a [5] = {1,2,3,4,5};

我使用bool cmp()函数按降序排序, 我想知道:它是如何工作的,哪个元素是int a,哪个是int bbool cmp()函数中的参数),什么时候排序,什么时候{{1返回1,什么时候返回0?

bool cmp()

2 个答案:

答案 0 :(得分:3)

如何实现它取决于标准库的实现。保证O(Nlog(N))复杂度true。常见实现使用quicksortintrosort

比较函数是一个二进制函数,如果第一个参数严格小于第二个参数,则必须返回a。该实现使用此函数来比较容器的两个元素,以确定哪个元素应该在哪个元素之前 - 因此bx < y可以是容器中的任何两个元素。此函数必须对元素进行严格的弱排序。那就是:

  • 元素永远不会低于自身
  • 如果y < x,则不是x < y
  • 的情况
  • 如果y < zx < z,则operator<

如果您不提供比较功能,则使用std::less。同样,您可以将{{1}}作为比较函数传递。

答案 1 :(得分:0)

在此处检查排序方法的引用:http://en.cppreference.com/w/cpp/algorithm/sort

第一个参数是起始指针。 第二个参数是结束指针。 第三个参数是可选的。它是比较函数,用于定义如何排序。