在以下代码中,sort()
函数如何工作?
例如,如果我们有一个数组:
a [5] = {1,2,3,4,5};
我使用bool cmp()
函数按降序排序,
我想知道:它是如何工作的,哪个元素是int a
,哪个是int b
(bool cmp()
函数中的参数),什么时候排序,什么时候{{1返回1,什么时候返回0?
bool cmp()
答案 0 :(得分:3)
如何实现它取决于标准库的实现。保证O(Nlog(N))
复杂度true
。常见实现使用quicksort或introsort。
比较函数是一个二进制函数,如果第一个参数严格小于第二个参数,则必须返回a
。该实现使用此函数来比较容器的两个元素,以确定哪个元素应该在哪个元素之前 - 因此b
和x < y
可以是容器中的任何两个元素。此函数必须对元素进行严格的弱排序。那就是:
y < x
,则不是x < y
y < z
和x < z
,则operator<
如果您不提供比较功能,则使用std::less
。同样,您可以将{{1}}作为比较函数传递。
答案 1 :(得分:0)
在此处检查排序方法的引用:http://en.cppreference.com/w/cpp/algorithm/sort
第一个参数是起始指针。 第二个参数是结束指针。 第三个参数是可选的。它是比较函数,用于定义如何排序。