A Importância dos Algoritmos
Quando paramos para refletir, percebemos que os algoritmos estão presentes em diversos aspectos da nossa vida, indo muito além dos computadores e das redes sociais. Na verdade, podemos encontrar algoritmos em praticamente tudo o que fazemos, se analisarmos cuidadosamente.
Mas afinal, o que é um algoritmo? Em termos simples e diretos, um algoritmo é um conjunto de passos para realizar uma tarefa específica. Por exemplo, escovar os dentes pode ser considerado um algoritmo. Se tentarmos explicar para uma criança como escovar os dentes pela primeira vez, provavelmente o faremos de forma detalhada, como um checklist ou uma sequência de passos:
- Pegue a escova de dentes.
- Pegue a pasta de dentes.
- Coloque uma quantidade adequada de pasta na escova.
- Molhe as cerdas da escova com água.
- "Escove" os dentes
- Limpe a língua com a escova ou raspador de língua.
- Enxágue bem a boca com água.
- Limpe a escova de dentes e guarde-a em local adequado.
Cada um desses passos são instruções específicas sobre como realizar a ação. No entanto, vale ressaltar que, embora o passo a passo seja detalhado, ainda pode haver espaço para interpretação (por isso deixei o item 5. "Escove" com aspas), o que diferencia um algoritmo para computador, assunto que abordarei mais adiante.
Percebe como tudo pode ser transformado em um algoritmo? Desde tarefas simples do dia a dia até processos mais complexos, todos seguem uma sequência de instruções para serem concluídos.
Agora, por que os algoritmos na programação são tão importantes?
A resposta é simples: um algoritmo mal elaborado pode ter consequências significativas, tanto em termos de eficiência quanto de resultados obtidos.
Vou exemplificar isso com uma situação clássica e simples: Suponha que você tenha uma lista de nomes organizados em ordem alfabética e precise encontrar um nome específico, como "Kira". Vou apresentar duas opções de algoritmos para essa tarefa:
Primeiro Algoritmo: Você começa a busca a partir da letra A e folheia página por página até encontrar o nome desejado.
Segundo Algoritmo: Você sabe que a lista está ordenada alfabeticamente, então decide abrir o livro na metade e verificar se a inicial do nome "Kira" (ou seja K) está antes ou depois dessa posição.
Antes de você ler a resposta, responda nos comentários qual você acha ser mais rápido e por que? Assim podemos interagir uns com os outros!
Ao meu ver, claramente o segundo algoritmo é mais eficiente. Ele utiliza uma estratégia inteligente para reduzir o tempo de busca, enquanto o primeiro método é mais ingênuo e demorado.
Agora, imagine que cada movimento que você faz custe R$1
. Se a inicial do fulano for com A, beleza! Você acha em poucas "ações", talvez com sorte nas primeiras páginas gastando sla R$2
.
Porém, se o nome começa com K, até chegar na seção dos K's, quanto teríamos gastado? E imagine se a lista tenha bilhões de nomes...
Levando isso em consideração, qual algoritmo você acha que sairá mais caro no final das contas, o primeiro ou segundo?
Ao compreender o que foi dito, você já está aprendendo sobre dois tipos de algoritmos: a busca simples e a busca binária. Quero explorá-los com mais detalhes em publicações futuras, meu intuito neste momento é apenas cutucar a curiosidade de vocês.
Mas saiba desde já que o tempo de execução de um algoritmo é medido por meio de seu crescimento. Nesse caso, poderíamos até dizer que o "custo" (R$1 por ação) do algoritmo é medido por meio de seu crescimento.