评估C 中的二元谓词

Evaluation of the binary predicates in C++

本文关键字:二元 谓词 评估      更新时间:2023-10-16

如何评估二进制谓词?

例如,如果我想按降序排序,那么我应该写:

bool isGreater(int x, int y) 
{
    return x > y;
}

bool isGreater(int x, int y) 
{
    return y > x;
}

两者到底有什么区别?我了解这两个参数将相互比较,但是返回结果应该是什么-truefalse?这是怎么重要的?因此,我的问题基本上是,我如何确定第一个参数是否应该在第二个参数之前进行,如果我不知道它们通过的顺序?

sort()函数将以这种方式调用(height是要排序的数组):

sort(height, height+N, isGreater);

NOTE :我确实参考了这样的链接,但它们并没有明确关注此问题。

有人可以澄清我的疑问吗?谢谢!

这是一个非常简单的上升顺序排序算法:

for i ← 1 to length(A)-1
    j ← i
    while j > 0 and A[j-1] > A[j]
        swap A[j] and A[j-1]
        j ← j - 1
    end while
end for

与谓词" mycompare(x,y)" {return x< = y;}"看起来像这样:

for i ← 1 to length(A)-1
    j ← i
    while j > 0 and MyCompare(A[j-1], A[j]) == false
        swap A[j] and A[j-1]
        j ← j - 1
    end while
end for

现在,排序算法可以通过更改谓词来按任何顺序排序。由于此谓词是std :: sort的参数,表示std :: sort可以按任何顺序排序。