# coding=utf-8 # v - wektor liczb # x - poszukiwana liczba def binary_index(v, x): # jeśli na liście pozostał tylko szukany element, to znaleźliśmy na pozycji 0 if v == [x]: return 0 # jeśli lista jest pusta lub zawiera element różny niż szukany, to już nie znajdziemy - zwracamy -1 if len(v) <= 1: return -1 s = len(v) / 2 # jeśli lista jest za długa, to rekurencyjnie wywołaj funkcję dla mniejszego przypadku problemu if v[s] > x: return binary_index(v[:s], x) b = binary_index(v[s:], x) if b == -1: return -1 else: # w przypadku, gdy szukamy w prawej połowie listy, trzeba odpowiednio przesunąć zwracany indeks return b + s