Допустим, мой список состоит из 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 раз! Думаю, невероятно верить, поэтому мой вопрос:
Это применимо и на практике, или это только теория?