2

我正在使用以下代码对 std.vector 中的元素进行排序

struct element {
    int order;
    int someValue;
};

int comp( element a, element b ) {
    if (a.order < b.order)
        return true;
    return (rand() % 2) == 0;
}

vector.quickSort(comp);

如果我尝试在具有相同顺序值的元素上添加随机性,此代码是否正确

4

1 回答 1

3

这段代码是否正确。

你真的应该用一些数据编写一个测试来检查它。


如果您要编写一个测试,您会发现一些错误并知道原因,如果我们查看

if (a.order < b.order)
    return true;
return (rand() % 2) == 0;

您可以看到该a.order > b.order案例丢失,这就是为什么它在该案例中无法正常工作的原因,我们可以通过这样做来解决此问题,而是专注于例外情况,并将其他两种情况保留为默认行为(检查顺序):

if (a.order == b.order)
    return (rand() % 2) == 0;
else
    return a.order < b.order;
于 2012-11-16T00:31:49.783 回答