Um algoritmo é um conjunto de instruções. A definição é realmente assim tão simples. Um algoritmo pode ser tão fácil quanto dar instruções como esta:
- Desça a rua.
- Pega a primeira direita.
- Encontre a segunda casa à esquerda.
- Bata na porta.
- Entregue o pacote.
Mas enquanto a definição de algoritmo é simples, o significado real e como isso afeta nossas vidas pode ser bastante complexo.
Um exemplo de algoritmo
Um exemplo comum de um algoritmo que usamos em nossas vidas diárias é uma receita. Este conjunto de instruções nos fornece todos os ingredientes que precisaremos e instruções sobre o que fazer com esses ingredientes. Parece fácil, certo?
Mas e se você não souber onde o copo medidor é mantido? Você precisaria de um algoritmo para encontrá-lo. Você pode até precisar de um algoritmo sobre como usar um copo de medição.
Então, enquanto um algoritmo é um conjunto de instruções, ele também precisa levar em conta quem ou o que vai interpretar essas instruções. Por exemplo, se você der instruções a um amigo detalhando como ir de sua casa até a mercearia mais próxima, seu amigo só saberá como chegar a essa loja se souber onde sua casa está localizada. Eles não são capazes (ainda) de encontrar aquela mercearia em particular, digamos, na casa de outro amigo.
É assim que um algoritmo pode ser simples e complexo. E quando falamos em termos de algoritmos de computador, entender o que um computador é capaz de fazer é parte fundamental da formulação de algoritmos.
Como os Algoritmos de Ordenação evoluíram
Um dos primeiros algoritmos criados foi a rotina de classificação de bolhas. A classificação de bolhas é um método para classificar números, letras ou palavras fazendo um loop através de um conjunto de dados, comparando cada conjunto de valores lado a lado e trocando-os quando necessário.
Esse loop é repetido até que o algoritmo possa percorrer toda a lista sem precisar trocar nada, o que significa que os valores são classificados corretamente. Esse tipo de algoritmo é geralmente chamado de algoritmo recursivo porque faz um loop repetidamente até concluir a tarefa.
Esse tipo de algoritmo pode parecer tão simples quanto:
- Vá para o primeiro valor.
- Verifique esse valor com o próximo valor e troque de posição, se necessário.
- Vá para o próximo valor e repita a comparação.
- Se estivermos no final da lista, volte ao topo se algum valor tiver sido trocado durante o loop.
Mas bolha tipo não acabou por ser o mais eficiente maneira de classificar valores. Com o passar do tempo e os computadores se tornaram mais capazes de realizar tarefas complexas rapidamente, novos algoritmos de ordenação surgiram.
Um desses algoritmos varre a primeira lista e cria uma segunda lista de valores classificados. Esse método faz apenas uma única passagem pela lista original e, com cada valor, percorrerá a segunda lista até encontrar o local correto para colocar o valor. Geralmente, é mais eficiente do que usar o método de classificação de bolhas.
É aí que os algoritmos podem ficar realmente loucos. Ou realmente interessante, dependendo de como você olha para isso.
Embora o método de classificação de bolhas seja considerado um dos métodos mais ineficientes de classificação de valores de várias maneiras, se a lista original for classificada corretamente, a classificação de bolhas pode ser uma das opções mais comuns. a maioria eficiente. Isso porque, nesse caso, o algoritmo de classificação de bolhas percorrerá a lista uma única vez e determinará que ela está corretamente classificada.
Infelizmente, nem sempre sabemos se nossa lista é pré-classificada, então temos que escolher um algoritmo que seja o mais eficiente para usar, em média, em um grande número de listas.
O que aprendemos com o algoritmo de classificação de bolhas
- Os algoritmos evoluem ao longo do tempo à medida que encontramos formas mais eficientes de fazer as coisas e / ou os computadores se tornam mais capazes de realizar tarefas complexas.
- Algoritmos são às vezes escolhidos porque são "mais" eficientes "a maioria" do tempo.
- Só porque um algoritmo é mais eficiente na maioria das vezes, não significa que seja sempre o melhor em cada caso individual.
Algoritmos do Facebook e mais na vida cotidiana
Algoritmos estão trabalhando no trabalho humano todos os dias. Quando você pesquisa na Web, um algoritmo está trabalhando para encontrar os melhores resultados de pesquisa. Peça instruções ao seu smartphone e um algoritmo decide a melhor rota para você. E quando você navega no Facebook, um algoritmo decide quais dos posts do Facebook do nosso amigo são mais importantes para nós. (Vamos esperar que nossos amigos não descubram de qual deles o Facebook acha que mais gostamos!)
Mas pensar algoritmicamente pode nos ajudar muito além da nossa vida de computador. Pode até nos ajudar a construir um sanduíche melhor.
Digamos que eu comece com duas fatias de pão, espalhando mostarda em uma fatia e maionese em outra fatia. Eu ponho uma fatia de queijo no pão com a maionese, um pouco de presunto em cima disso, um pouco de alface, duas fatias de tomate e então cubro com aquela fatia com a mostarda nela. Bom sanduíche, certo?
Definitivamente, se eu comê-lo imediatamente. Mas se eu deixá-lo na mesa por um tempo, essa fatia superior de pão pode ficar encharcada de absorver um pouco desse tomate. É um problema que eu não esperava, e posso fazer sanduíches por anos antes de perceber, mas quando o fizer, posso começar a pensar em maneiras de mudar meu algoritmo para construir um sanduíche melhor.
Por exemplo, eu poderia me livrar do tomate. Mas eu não quero perder esse sabor de tomate. Então, em vez disso, posso colocar o tomate no sanduíche depois do pão e da alface. Isso permite que a alface forme uma barreira protetora entre o tomate e o pão.
É assim que um algoritmo evolui. E um algoritmo não precisa ser executado por um computador para ser um algoritmo.Um algoritmo é um processo e os processos estão ao nosso redor.




