Menor elemento de uma lista de valores

Olá,

estou criando um programa e no algoritmo eu preciso calcular o menor elemento de uma lista de valores e, se possível, fazer com que retorne a posição desse menor elemento. Eu testei alguns exemplos e em alguns o código calculou certinho, mas em outros, ele retornou o maior elemento! Alguém poderia me ajudar?

Desde já agradeço.

Acho que ninguém aqui tem bola de cristal para adivinhar o teu problema. Se postares o código fica um pouco mais fácil de ajudar!

1 curtida
  • Poste o código!
  • Seja bem especifico!

so um pequeno rascunho, existem muitas ideias melhores de fazer isso, vc podia programando do seu jeito, e tentando entender, assim se aprende melhor: :slight_smile:

vet[]{1,2,3}
int menor;

if (vet[0]< vet[1])
menor = vet[0]
exibe ("Menor element": vet[posicao])
else if ?
exibe ("Menor element": vet[posicao])
else ?
exibe ("Menor element": vet[posicao])
}
package testes;

public class Teste_menor_elemento {

	public static void main(String[] args) {
		
		double[] lista = {15.5, 6.0, 0.0, 7.0, 13.0};
		
		int min = 0;
		for (int i = 0; i < lista.length; i++) {
			for (int j = 0; j < lista.length; j++) {
				if (lista[j] < lista[i] || lista[j] == lista[i]) {
					break;
				} else {
					min = i;
				}
			}
		}
		System.out.println(lista[min]);

	}

}

Eu testei este código para algumas sequências e deu certo, porém com esta aqui (e outras) não tá retornando o menor elemento. Eu sei que tem coisa errada quando (vi isso quando debuguei) mas não sei bem como consertar isso.

Para saber o menor número de um array de inteiros:

int[] numeros = {9,5,4,3,2,1,0,-1};
int menor = Integer.MAX_VALUE;
for(int m : numeros)
{
    if (m < menor)
    {
        menor = m;
    }
 }
 System.out.println(menor);

Na verificação do if, sempre vai cair no break, porque você está comparando valores iguais em posições iguais

if (lista[j] < lista[i])
//qual o valor de j e de i aqui?
//é como se voce perguntasse se 0.0 é menor que 0.0

tente colocar o i fora do for, atribua a ele valor 1 inicialmente, assim o if vai fazer verificação em posições diferentes, no caso, o 15.5 com o 6.0, o 6.0 com 0.0 etc

Deu certo aqui. Valeu