def isci1(a, x):
    """V tabeli a poišči indeks elementa x, z zanko while"""
    i = 0
    while i < len(a):
        if x == a[i]:
            return i
        else:
            i = i + 1
    return None


def isci2(a, x):
    """V tabeli a poišči indeks elementa x, z zanko for"""
    for (k, y) in enumerate(a):
        if x == y: return k
    return None


def bisekcija1(a, x):
    """V urejeni tabeli a poišči indeks elementa x z bisekcijo, rekruzivna verzija."""

    # definiramo pomožno funkcijo, ki išče v podtabeli a[i], a[i+1], ..., a[j],
    # pri čemer se izognemu temu, da bi dejansko zgradili podtabelo
    def isci(i, j):
        if j < i:
            return None
        else:
            k = (i + j) // 2
            if x == a[k]:
                return k
            elif x < a[k]:
                return isci(i, k-1)
            else: # a[k] < k
                return isci(k+1, j)

    # dejansko pokličemo pomožno funkcijo
    return isci(0, len(a)-1)

def bisekcija2(a, x):
    """V urejeni tabeli a poišči indeks elementa x z bisekcijo, verzija z zanko."""
    i = 0
    j = len(a) - 1
    while i <= j:
        k = (i + j) // 2
            if x == a[k]:
                return k
            elif x < a[k]:
                j = k - 1 # premakni desni rob iskalnega območja
            else: # a[k] < k
                i = k + 1 # premakni levi rob
    return None
