4

二次プローブ アルゴリズムと線形プローブ アルゴリズムを区別するのに問題があります。概念的な説明を読んでいると、最後に試したインデックスに I^2 が繰り返し追加されているのがわかります。ここではどうですか?リニアプロービングはこれを何に変えますか? 私が読んでいることから、以下の方法は二次プロービングを実装しています。

private int findPosQuadratic( AnyType x )
{
    int offset = 1;
    int currentPos = myhash( x );

    while( array[ currentPos ] != null &&
            !array[ currentPos ].element.equals( x ) )
    {
        currentPos += offset;  // Compute ith probe
        offset += 2;
        if( currentPos >= array.length )
            currentPos -= array.length;
    }

    return currentPos;
}
4

1 に答える 1