В упорядоченных массивах поиск методом деления пополам - очень эффективен
def bisect_search_in_sorted(somelist,value):
left, right = 0, len(somelist)
while left<right:
middle = (left+right)//2
if somelist[middle]==value:
return middle
elif somelist[middle]<value:
left=middle+1
else:
right=middle
a=[2,3,4,5,6,6,7,7,7,8,9]
print bisect_search_in_sorted(a,7)
Подобную функцию можно использовать для поиска "правильного" индекса
и последующей вставки нового элемента в массив. Т.е. из такой функции легко
сделать хэш-фукнцию и создать эффективный упорядоченный список.
Справочник алгоритмов v0.05 © 2007-2025 Igor Salnikov aka SunDoctor