私のリストが1,000,000
エントリについて長いとしましょう。アイテムにアクセスするのにかかる時間はO(500,000)
、私には非常に長いように思えます。
リストを複数のリストに分割するとどうなりますか? 例を見てみましょう:
リストを 10 の部分に分割すると、次のようなリストになります。
splitted_list = [
[list with 100,000 entries],
[list with 100,000 entries],
[list with 100,000 entries],
[list with 100,000 entries],
[list with 100,000 entries],
[list with 100,000 entries],
[list with 100,000 entries],
[list with 100,000 entries],
[list with 100,000 entries],
[list with 100,000 entries]
]
アイテムにアクセスする時間O(5) + O(50,000) = O(50,005)
は、約 1000% のスピードアップ になります。
元のリストをルート (1000
この場合) で分割すると、別の 1000 エントリを持つ 1000 個のリストを含むリストが得られます。
splitted_list = [
[list with 1000 entries],
[list with 1000 entries],
[list with 1000 entries],
[list with 1000 entries],
...
]
次に、アイテムにアクセスする時間を見てみましょう。
O(500) + O(500) = O(1000)
O(1000) < O(50,005) < O(500,000)
これで約1000倍の最適スピードアップ!信じがたいことだと思いますので、私の質問は次のとおりです。