Если у меня длинный список отсортированных чисел, и я хочу найти индекс наименьшего элемента, который больше некоторого значения, есть ли способ реализовать его более эффективно, чем использование бинарного поиска по всему списку?
Например:
import random
c = 0
x = [0 for x in range(50000)]
for n in range(50000):
c += random.randint(1,100)
x[n] = c
Какой самый эффективный способ найти местоположение наибольшего элемента в х, меньшего некоторого числа, z
Я знаю, что выуже может сделать:
import bisect
idx = bisect.bisect(x, z)
Но если предположить, что это будет выполняться много раз, будет ли еще более эффективный способ, чем бинарный поиск?Поскольку диапазон списка велик, для создания из всех возможных целых чисел требуется слишком много памяти.Можно ли было бы создать меньший список, скажем, каждые 5000 номеров и использовать его для ускорения поиска в определенной части большого списка?