bom dia estou fazendo um trabalho de estrutura de dados e preciso implementar um algoritmo para achar 2 maiores valores de um array…
acredito que já tenha achado e feito certo, pelo menos nos meus testes esta dando certo…
segue o código abaixo, mas não estou satisfeito, quero melhorar
não posso usar api java, antes que alguém sugira, pra ordenar…
public void doisMaioresValores() {
int valores[] = new int[10];
for (int i = 0; i < valores.length; i++) {
valores[i] = (int) ((Math.random() * 10));
}
int menorValor = valores[0];
for (int i = 1; i < valores.length; i++) {
if (valores[i] < menorValor) {
menorValor = valores[i];
}
}
int maiorValor = menorValor;
for (int i = 0; i < valores.length; i++) {
if (valores[i] > maiorValor) {
maiorValor = valores[i];
}
}
int segundoMaiorValor = menorValor;
for (int i = 0; i < valores.length; i++) {
if ((valores[i] > menorValor) && (valores[i] != maiorValor)) {
menorValor = valores[i];
segundoMaiorValor = menorValor;
}
}
System.out.println("Segundo Maior Valor: " + segundoMaiorValor);
System.out.println("Maior Valor: " + maiorValor);
}
cheguei a criar um codigo novo aonde eu faço comparações para a par de posicoes no array pra achar o maior ou menor, não tenho conseguido achar os 2 ao mesmo tempo
acho os 2 pq pra achar depois o segundo maior vejo sendo importante achar o menor…
public void maiorValor() {
int vetor[] = new int[100];
for (int i = 0; i < vetor.length; i++) {
vetor[i] = (int) (Math.random() * 100);
}
int tamanhoVetor = vetor.length;
int maiorElemento = vetor[0];
int i = 0;
if ((tamanhoVetor % 2) != 0) {
if (vetor[tamanhoVetor - 1] > vetor[(tamanhoVetor - 2)]) {
vetor[(tamanhoVetor - 2)] = vetor[(tamanhoVetor - 1)];
}
tamanhoVetor--;
}
while (i != tamanhoVetor) {
if (vetor[i] > vetor[i + 1]) {
if (vetor[i] > maiorElemento) {
maiorElemento = vetor[i];
}
} else {
if (vetor[i + 1] > maiorElemento) {
maiorElemento = vetor[i + 1];
}
}
i += 2;
}
int menorElemento = maiorElemento;
i = 0;
while (i != tamanhoVetor) {
if (vetor[i] < vetor[i + 1]) {
if (vetor[i] < menorElemento) {
menorElemento = vetor[i];
}
} else {
if (vetor[i + 1] < menorElemento) {
menorElemento = vetor[i + 1];
}
}
i += 2;
}
for (int valor : vetor) {
System.out.print(valor + " - ");
}
System.out.println("");
System.out.println("Maior elemento: " + maiorElemento);
System.out.println("Menor elemento: " + menorElemento);
}
ai queria a ajuda, pra saber se tem como dentor ja do proprio primeiro while, achar o valor menor…
vlw