24

セット内の挿入操作には log(n) 時間しかかからないことを読みました。そんなことがあるものか?

挿入するには、まず、並べ替えられた配列内で新しい要素を配置する必要がある場所を見つけます。二分探索を使用すると、log(n) がかかります。次に、その位置に挿入するには、後続のすべての要素を 1 つ右にシフトする必要があります。さらにn時間かかります。

私の疑問は、セットが配列として実装され、要素がソートされた順序で格納されるという私の理解に基づいています。私の理解が間違っている場合は修正してください。

4

1 に答える 1

47

std::set通常、赤黒二分探索木として実装されます。ツリーのバランスが保たれているため、このデータ構造への挿入は最悪の場合、O(log(n)) の複雑さになります。

于 2012-10-08T06:39:09.243 に答える