Primeiras aulas do curso Algoritmos I: Selection, Insertion e Introdução a Análise

Algoritmos I: Selection, Insertion e Introdução a Análise

Busca do menor valor e um trecho específico no array - Introdução

Nesse curso, vamos falar de soluções para diversos problemas. Eu sempre quero resolver meus problemas, mas que tipo de problema vou resolver aqui? Problemas ligados a ordem, a quem é mais caro, mais barato, qual o melhor caminho, o melhor produto. Todos esses problemas envolvem dizer algo maior que outra coisa. Tudo que envolve uma pergunta do tipo quem ou algo que vem mais ou menos envolve ordenar, pegar um conjunto de itens e ordenar, dizer quem tem mais e quem tem menos. Envolve eu dar uma ordem.

Repare que muitas das perguntas que fazemos estão ligadas à ordem. Se você busca um hotel, você quer próximo de uma região, primeiro os mais baratos, depois os mais caros. Ou você quer os que tem determinada característica, mas primeiro os mais baratos, depois os mais caros. Ou quero saber quem ganhou e perdeu o campeonato. Tem tanta coisa que queremos ordenar. Está tudo ao nosso redor. Você quer o ônibus mais rápido, que chega em menos tempo.

Nós vamos aprender a ordenar, encontrar os melhores, os menores, os maiores, os piores, não importa. Encontrar o que queremos dada uma ordem. Tudo isso conseguimos fazer com o que veremos nesse curso. Vamos ver maneiras de encontrar qualquer coisa do gênero. Algoritmos, soluções, maneiras de resolver esse problema.

Vamos começar com algoritmos de encontrar o menor, o preço mais barato para comprar.

Busca do menor valor e um trecho específico no array - Encontrando o menor

Primeiro problema do meu dia a dia. Quero comprar um carro e vou entrar em um site para pesquisar o preço. Ele me traz cinco tipos. Uma Lamborghini por um milhão, um Jipe por 46 mil reais. Uma Brasília por 16 mil reais. Um Smart por 46 mil reais e um Fusca de 17 mil reais. É um site de carros usados. Difícil procurar, porque no meu caso quero os mais baratos. Em diversos situações quero isso. Por exemplo, se quero comprar um livro. Quero o da loja mais barata. Ou se quero um brinquedo, comparo em vários sites. Quero saber quantos erros cada aluno cometeu. O ônibus que chega mais rápido. O carro mais barato.

Dado todos os meus produtos, cada carro tem um nome e um preço. Eu tenho cinco carros. Qual o menor? Você já falou para mim. É a Brasília. Você respondeu bem rápido. Como foi que você fez na sua cabeça para responder isso?

Eu olhei todos os carros e vi o mais barato. Estou roubando, porque meu pensamento foi muito mais devagar que isso, só que ele acontece rápido. Ele é muito mais passo a passo. Olhei na tela, para os carros. Pense no processo. Um carro por vez. A Lamborghini custa um milhão, por enquanto é mais barato. O Jipe custa 46 mil. Já é mais barato que o mais barato até agora. Então, na verdade, o Jipe é o carro mais barato. Tem também uma Brasília de 16 mil. Opa, ela é mais barata que o carro mais barato até agora. Ele é o mais barato. Mas também temos o Smart. É mais caro que o carro mais barato, ignoro. O Fusca custa 17 mil. Também é mais caro, ignoro. Acabaram os carros, achei o mais barato. É a Brasília. Comparei sempre o carro atual com o mais barato até o momento. Foi isso que eu fiz na minha cabeça.

Isso fica ainda mais claro se você pegar, por exemplo, cinquenta, cem carros, porque não conseguimos mais memorizar de cabeça qual o mais barato. Se você pegar uma quantidade maior, você vai anotar no papel, porque é difícil processar rápido quando o número de dados é alto. Nós anotamos o carro em que estamos e o mais barato até o momento. Se o número de carros é pequeno, o papel é minha cabeça.

Eu vou enumerar os carros porque em programação a maior parte das linguagens começa com a posição zero. Vou até a posição quatro nesse caso. Vamos rodar o mesmo processo visualmente. Para fazer isso, primeiro coloque no papel. Anote o atual e o mais barato por vez.

Agora que você executou o processo com calma no papel, pare para perceber como somos rápidos nisso. Quando executamos um processo, um algoritmo de cabeça, por exemplo, soma, multiplicação, divisão simples, nós nem percebemos o processo. É automático. Mesma coisa aqui. Quando quero encontrar o maior ou menor algoritmo, fazemos várias contas na cabeça.

Transcrever para um programa o algoritmo é transcrever esse processo passo a passo para o programa. É o que vamos fazer agora. Primeiro vamos simular com as imagens e depois vamos transcrever.

Começo com o primeiro carro de todos. Se vou começar com o primeiro, o mais barato e o atual são o mesmo. Então, na verdade, vou começar com os dois valendo zero. O carro atual é o carro zero e o mais barato é o carro zero.

O carro zero é mais barato que o carro zero? Não, porque ele é o mesmo. Vamos para o próximo. Troco o atual por um. O carro um custa 46 mil reais. Ele é mais barato que o carro zero? Sim. Então trocamos o mais barato para um.

Vamos para a Brasília. É o carro dois no atual. Ele é mais barato? Sim. Então trocamos novamente. O carro atual agora é o três. Ele é mais barato? Não. Então não fazemos nada. O carro quatro é mais barato? Não. Então não fazemos nada. Acabou aí. O carro mais barato então é o carro dois.

O que fizemos foi olhar e começar com a variável atual e mais barato sendo zero. O primeiro carro. Aí fomos com o contador do zero até total de carros, olhando se o carro era mais barato ou não. Se for, atualizamos. No fim, temos o carro mais barato. Esse é o processo que fizemos.

Vamos passar a limpo o que acabamos de criar. O processo que criamos e executamos na nossa cabeça. Primeiro, definimos dois valores. O produto atual, que começa com zero, e o mais barato, que também começa com zero. Na memória, temos exatamente isso. Esse foi o início do processo, do algoritmo.

Depois, fomos passando por cada produto do array. Se tenho cinco produtos, vou do zero ao quatro inclusive, ou do zero ou cinco exclusive. Então, eu falo que se o preço do atual for menor do que o preço do mais barato, quer dizer que encontrei um produto mais barato. Esse produto atual é mais barato do que o mais barato até agora. Nesse caso, trocamos o mais barato. Ele vai ser igual ao atual.

Esse é o código que vou ter. Quando formos executar esse código, o que vai acontecer? Primeiro, temos as duas variáveis inicializadas com zero. Vamos pegar o preço do zero e ver se é menor que o preço do mais barato. Se sim, troca. Se não, ignora. Depois vamos para o próximo e fazemos a mesma checagem até chegar no último.

Esse é nosso pseudoalgoritmo de encontrar o valor mais barato dentro de uma array.

Busca do menor valor e um trecho específico no array - Pensando em java

Já vimos como executar o processo, o algoritmo, a sequência de tarefas para detectar o produto mais barato dentro de uma array de produtos. Meu array tem cinco posições, eu vou da posição zero até a posição quatro, criando uma variável atual e atualizando e verificando se o preço do atual é menor que o preço do mais barato. Vamos escrever isso em Java.

Vou criar um projeto, meu projeto se chama produtos. E dentro dele, vou criar minha classe testa menor preço. O pacote que vou usar é br.com.alura.algoritmos. Vou colocar o método main.

A primeira coisa que precisamos é do preço dos produtos, dos carros. Vou criar uma array de preços com cinco posições. O preço zero é um milhão, o preço um era o do Jipe, depois tínhamos a Brasília, o Smart e o Fusca. Eu queria detectar o menor deles. Fizemos isso criando uma variável que armazenava qual desses caras era o mais barato. Ele começava com zero.

O carro com o qual vou começar é o zero, ele é o atual. É uma variável inteira. Depois vou executar uma tarefa para vários valores da variável atual. Claro que o quatro é inclusive, porque precisamos do preço do Fusca. Se o preço do atual for menor que o preço do mais barato, então na verdade o mais barato é o atual. E claro, toda vez que executamos o looping temos que atualizar para ir para o próximo produto. Independente se é o menor ou mais caro. No final, imprimimos o mais barato e o preço do mais barato.

Já temos um código que é quase Java. Não funciona de verdade, mas é uma ideia do que está acontecendo. Queremos executar um laço de zero até quatro. É bem comum usar o for. Do atual, zero, até o quatro, somo mais um.

Aqui dentro do verificando se o preço do atual é menor que o preço do mais barato. Se o preço do atual for menor que o preço do mais barato, fico feliz. Quer dizer que o mais barato é o atual. No final, imprimo o mais barato e o carro mais custa preço mais barato.

Testando, funcionou. O computador foi capaz de executar um algoritmo que na nossa cabeça nem percebemos. Quando executamos na nossa cabeça, fizemos isso muito rapidamente, comparando carro a carro. Foi a mesma coisa que ele fez. Com muitos produtos, você iria precisar de um papel para anotar e duas variáveis. Uma que é seu dedo, para apontar o produto, e outra a variável no papel.

Daqui a pouco vamos simular esse cara no papel de novo com o código do lado.

Sobre o curso Algoritmos I: Selection, Insertion e Introdução a Análise

O curso Algoritmos I: Selection, Insertion e Introdução a Análise possui 180 minutos de vídeos, em um total de 39 atividades. Gostou? Conheça nossos outros cursos de Computação em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Computação acessando integralmente esse e outros cursos, comece hoje!

  • 1124 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1124 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1124 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1124 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana