<-- Back to list of examples

# Sample Python/Pygame Programs
# Simpson College Computer Science
# http://programarcadegames.com/
# http://simpson.edu/computer-science/

# Leer un archivo desde disco y pasarlo a un array.
file = open("super_villains.txt")

listade_nombres = []
for linea in file:
    linea = linea.strip()
    listade_nombres.append(linea)

file.close()

# Búsqueda lineal
clave = "Morgiana the Shrew"

i = 0
while i < len(listade_nombres) and listade_nombres[i] != clave:
    i += 1

if i == len(listade_nombres):
    print( "El nombre no estaba en la lista." )
else:
    print( "El nombre se encuentra en la posición",i)

# Búsqueda binaria
clave = "Morgiana the Shrew";
limite_inferior = 0
limite_superior = len(listade_nombres)-1
encontrado = False

# Iteramos hasta encontrar el item, o donde se encuentran nuestros
# límites inferior/superior

while limite_inferior <= limite_superior and not encontrado:

    #Encontramos la posición intermedia
    posicion_intermedia = (limite_inferior + limite_superior) // 2

    # Decidimos si:
    # mover hacia arriba el límite inferior, o
    # mover hacia abajo el límite superior, o
    # hemos encontrado lo que buscábamos
    
    if listade_nombres[posicion_intermedia] < clave:
        limite_inferior = posicion_intermedia + 1
    elif listade_nombres[posicion_intermedia] > clave:
        limite_superior = posicion_intermedia - 1
    else:
        encontrado = True

if encontrado:
    print( "El nombre se encuentra en la posición", posicion_intermedia)
else:
    print( "El nombre no estaba en la lista." )