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そのケースでは正しく機能しません。代わりに、例外的なケースに焦点を当て、他の2つのケースをデフォルトの動作(順序を確認)のままにすることで、これを修正できます。

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