human
I am working on the file "Coursera/CICCP2/Curso Introdução à Ciência da Computação com Python - Parte 2.ipynb".
The first task is:
Busca Binária
Objetivo: localizar o elemento x em uma lista

Considere o elemento m do meio da lista
se x == m ==> encontrou!
se x < m ==> procure apenas na 1ª metade (da esquerda)
se x > m ==> procure apenas na 2ª metade (da direita),
repetir o processo até que o x seja encontrado ou que a sub-lista em questão esteja vazia
Can you write Python code for it?

Write me a the Python code you requested?
assistant
#Here is the Python code you requested.

class Buscador:
    
    def busca_por_titulo(self, playlist, titulo):
        for i in range(len(playlist)):
            if playlist[i].titulo == titulo:
                return i
        return -1
    
    def busca_binaria(self, lista, x):
        primeiro = 0
        ultimo = len(lista) - 1
        
        while primeiro <= ultimo:
            meio = (primeiro + ultimo) // 2
            if lista[meio] == x:
                return meio
            else:
                if x < lista[meio]: # busca na primeira metade da lista
                    ultimo = meio - 1 # já foi visto que não está no elemento meio, então vai um a menos
                else: 
                    primeiro = meio + 1
        return -1

lista = [-100, 0, 20, 30, 50, 100, 3000, 5000]
b = Buscador()
b.busca_binaria(lista, 30)