2

私の方法、パーティション、クイックソートの場合、実行しても問題ありません。ただし、プロジェクトの送信ページにアップロードするたびに、テストはこのコードの設計に対して否定的な結果を返します。のような

static long partition(DataArray array, long l, long r, Record pivot)
        throws Exception {

    do { // Move bounds inward until they meet
        while (array.get(++l).compareTo(pivot) < 0)
            ;

この行、私は得る.. 3つのエラー...

エラー [Checkstyle]: -2 このステートメントは単なる ';' です したがって、何もしません。「;」を追加した可能性があります 不適切な場所 (if または for ループの後など)。コードが欠落しているか、余分な「;」を削除しているかを確認してください。

エラー [PMD]: -1 (制限を超えました) while ループの本体のコードを常に中かっこで囲むことをお勧めします。エラーの可能性を減らすのに役立ちます。

エラー [PMD]: 0 (制限を超えました) この while ループの本体は空です。while の後に誤ってセミコロン (;) を付けないように注意してください。ループの本体で何もする必要がない場合は、おそらくループ全体を省略できます。

        while ((r != 0) && ((array.get(--r).compareTo(pivot) > 0)))
            ;

ここに別の3つのエラーがあります

エラー [Checkstyle]: -2 このステートメントは単なる ';' です したがって、何もしません。「;」を追加した可能性があります 不適切な場所 (if または for ループの後など)。コードが欠落しているか、余分な「;」を削除しているかを確認してください。

エラー [PMD]: 0 (制限を超えました) while ループの本体のコードを常に中かっこで囲むことをお勧めします。エラーの可能性を減らすのに役立ちます。

エラー [PMD]: 0 (制限を超えました) この while ループの本体は空です。while の後に誤ってセミコロン (;) を付けないように注意してください。ループの本体で何もする必要がない場合は、おそらくループ全体を省略できます。

        swap(array, l, r); // Swap out-of-place values
    }

    while (l < r); // Stop when they cross
    swap(array, l, r); // Reverse last, wasted swap
    return l; // Return first position in right partition
}

このテストサーバーは有線であることを知っているので、この種の理由からポイントを獲得します。同じことを実行するこのコードを書き直すにはどうすればよいですか?

4

1 に答える 1