Ayuda. Alguien puede decirme por qué en este código es necesario colocar -1 en len(lista) <code>&lt;def busqueda_binaria(lista, valor): ...

Jhojan Rivera

Jhojan Rivera

Pregunta
studenthace 3 años

Ayuda. Alguien puede decirme por qué en este código es necesario colocar -1 en len(lista)

<def busqueda_binaria(lista, valor): primero = 0 ultimo = len(lista) -1 encontrado = False while primero <= ultimo and not encontrado: mitad = (primero + ultimo) // 2 if lista[mitad] == valor: encontrado = True else: if valor < lista[mitad]: ultimo = mitad - 1 else: primero = mitad + 1 return encontrado numeros = [2, 3, 5, 7, 11, 13, 17, 19] llave = 13 print(busqueda_binaria(numeros, llave)) >
3 respuestas
para escribir tu comentario
    Juan Teixeira

    Juan Teixeira

    studenthace 3 años

    Jhojan, una lista en Python en un array como comunmente se conoce. Te dare un ejemplo que se podra entender mejor.

    MiArray = [ 1, 2 , 3 , 4 ] si quieres saber la longitud del array usas longitud = len(MiArray) #resultado 4

    Pero si quieres obtener la ultima posición en MiArray debe usar: UltimaPosicion = len(MiArray) - 1 #resultado 4

    Esto es porque en los Array la primera posición es 0 , te muestro un ejemplo:

    MiArray = [ 1, 2 , 3 , 4 ] posiciones en este array

    en el valor 1 = su posición es 0 en el valor 2 = su posición es 1 en el valor 3 = su posición es 2 en el valor 4 = su posición es 3

    entonces como quieren conseguir el ultimo valor del array se usa la función

    UltimaPosicion = len(MiArray) - 1 #resultado 4

    Espero haberte ayudado.

    Dardo Luis Vilar Rivero

    Dardo Luis Vilar Rivero

    studenthace 3 años

    Eso se debe a que la longitud de la lista es una cosa, puede ser 3, pero las posiciones del índice de la lista inician en 0, así que irían del 0 al 2, por ende: longitud-1

    Juan Diego Mamani

    Juan Diego Mamani

    studenthace 3 años

    hola, es porque el while esta empezando en 0. Como la cantidad de elementos es 3, entonces esa es la cantidad que necesita recorrerse. Al poner el punto de partida en 0 y sumado uno por cada iteracion hasta ser menor o igual al valor "ultimo" (2), hace que se recorra exactamente 3 veces

Curso de POO y Algoritmos con Python

Curso de POO y Algoritmos con Python

Comprende la eficiencia algorítmica con Python. Analiza complejidad temporal y espacial, visualiza resultados y resuelve problemas de optimización. Ideal para desarrollar habilidades esenciales en el análisis de algoritmos.

Curso de POO y Algoritmos con Python
Curso de POO y Algoritmos con Python

Curso de POO y Algoritmos con Python

Comprende la eficiencia algorítmica con Python. Analiza complejidad temporal y espacial, visualiza resultados y resuelve problemas de optimización. Ideal para desarrollar habilidades esenciales en el análisis de algoritmos.