【发布时间】:2013-01-19 07:10:04
【问题描述】:
在下面的代码中,sort() 函数是如何工作的?
例如,如果我们有一个数组:
a [5] = {1,2,3,4,5};
然后我使用我的bool cmp() 函数按降序对其进行排序,
我想知道:它是如何工作的,哪个元素是int a,哪个是int b(bool cmp() 函数中的参数),它什么时候排序,bool cmp() 什么时候返回 1,什么时候返回返回 0?
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp (int a , int b)
{
return (a > b );
}
int main ()
{
int a[100];
int n;
cin >> n;
for (int i=0 ; i<n ;i++)
cin >> a[i];
sort(a,a+n,cmp);
cout << endl << endl;
for (int i=0 ; i<n ;i++)
cout << a[i] << " ";
return 0;
}
【问题讨论】:
-
查看一个好的 C++ 参考,例如en.cppreference.com/w/cpp/algorithm/sort.
-
如果你想知道它是如何实现的,只需在你包含的头文件中查找它(
algorithm)。 -
@us2012 这是一个可怕的建议。
std::sort写得很快,不可读。 -
@Yakk 我不敢苟同。对于它如何工作的一般概述,Oli 发布了一个链接来解释这一点。正如我的评论所说,如果您想知道它是如何实现的,您必须阅读实现。