Vetor - maior e menor elemento
Sr´s, bom dia....
eu tenho o seguinte código:
[b] int [] v = {3, 2, 4, 7, 5, 8, 6, 1, 9, 10};
OrdenacaoDecrescente bs = new OrdenacaoDecrescente();
bs.Ordenar(v);
System.out.println("Vetor Ordenado abaixo em forma decrescente:");
for(int num : v){
System.out.print(num + " ");
}
int menor = 0;
int maior = 0;
for(int a = 0; a < v.length; a++)
if(v[a] > maior){
maior = v[a];
if(v[a] < menor)
menor = v[a];}
System.out.println();
System.out.println("Maior Elemento : " + maior);
System.out.println("Menor Elemento : " + menor); [/b]
O problema está sendo o seguinte: no momento dele encontrar o menor elemento, ele busca apenas o valor iniciada na variável " 0" e não busca no vetor..
o que eu estou fazendo de errado ?
Obrigado.
Bruno
Curtidas 0
Respostas
Carlos Heuberger
09/04/2009
[quote="Bhoppus"]...
O problema está sendo o seguinte: no momento dele encontrar o menor elemento, ele busca apenas o valor iniciada na variável " 0" e não busca no vetor..
[b]o que eu estou fazendo de errado ?[/b]
[b]int menor = 0;[/b]
só irá achar valores menores que zero...
Soluções:
1) int menor = Integer.MAX_VALUE;
meio feio mas funciona....
2) int menor = v[0]
não funciona se o vetor estiver vazio...
3) resultado: menor = v[v.length-1]
já que o vetor foi ordenado em ordem decrescente, o maior valor estará na primeira posição e o menor na última... assumindo que a ordenação tenha funcionada.
[]]
GOSTEI 0
Carlos Heuberger
09/04/2009
PS: obviamente o mesmo erro vai ocorrer com o [b]maior[/b], se tiver somente valores negativos dentro do vetor...
GOSTEI 0
Deh
09/04/2009
Segue um código legalzinho:
public class Teste {
public static void main(String[] args) {
int vetor[] = {5, 3, 1, 11, 18, 10};
System.out.println("inicial");
imprimirElementos(vetor);
boolean flag;
do {
flag = false;
for (int i = 1; i < vetor.length; i++) {
if (vetor[i - 1] > vetor[i]) {
int temp = vetor[i -1];
vetor[i - 1] = vetor[i];
vetor[i] = temp;
flag = true;
}
}
} while (flag);
System.out.println("Ordernados");
imprimirElementos(vetor);
if (vetor.length > 0)
System.out.println("Menor: " + vetor[0] + " Maior: " + vetor[vetor.length -1]);
else
System.out.println("Não há elementos no vetor");
}
private static void imprimirElementos(int vetor[]) {
for (int elementos : vetor) {
System.out.print(elementos + " - ");
}
System.out.println();
}
}
GOSTEI 0
Bruno
09/04/2009
Sr´s...
Muito obrigado pela ajuda, consegui fazer o que queria.
Bruno
GOSTEI 0
Roni
09/04/2009
Batman, usei o seu algoritmo porém houve uma falha,na hora de ordenar em vez de ordenar corretamente , ele da um bug, exemplo:
coloco valores de 12,70,20,50
Horaq ele ordena ele poem o 18 como menor e na lista de sequencia aparece apenas
18,70,70,70,70
tentei reformular esse alorimo mesmo assim naão tive solucao
:(
GOSTEI 0
Petronio Filho
09/04/2009
Poxa vida, ninguém dá um código certo não é?
Para quem teve dúvidas e perdeu horas e mais horas de busca e não encontrou nada ai segue um código que de fato funciona.
GOSTEI 0
Petronio Filho
09/04/2009
[quote="crazyshock"]Batman, usei o seu algoritmo porém houve uma falha,na hora de ordenar em vez de ordenar corretamente , ele da um bug, exemplo:
coloco valores de 12,70,20,50
Horaq ele ordena ele poem o 18 como menor e na lista de sequencia aparece apenas
18,70,70,70,70
tentei reformular esse alorimo mesmo assim naão tive solucao
:(
Respondi sua questão
GOSTEI 0
Petronio Filho
09/04/2009
depois de quase um ano...
[quote="Petronio Filho"]Poxa vida, ninguém dá um código certo não é?
Para quem teve dúvidas e perdeu horas e mais horas de busca e não encontrou nada ai segue um código que de fato funciona.
funciona, mas somente se não tiver número negativo ou maior que 9999999...
Foi por isso que escrevi que seria melhor inicializar os valores com [color=#008800]Integer.MAX_VALUE[/color] e [color=#008800]Integer.MIN_VALUE[/color]!
[quote="Petronio Filho"][quote="crazyshock"]Batman, usei o seu algoritmo porém houve uma falha,na hora de ordenar em vez de ordenar corretamente , ele da um bug, exemplo:
coloco valores de 12,70,20,50
Horaq ele ordena ele poem o 18 como menor e na lista de sequencia aparece apenas
18,70,70,70,70
tentei reformular esse alorimo mesmo assim naão tive solucao
:( GOSTEI 0
Lucas Iorio
09/04/2009
Não sei qual seria o exercício, e não li todos os post,
não poderia ser aassim?
import java.util.Arrays;
public class SortArray {
public static void main(String[] args) {
int vetor[] = {5, 3, 1, 11, 18, 10};
Arrays.sort(vetor);
for (int number : vetor) {
System.out.println(number);
}
}
}
GOSTEI 0
Petronio Filho
09/04/2009
Lógico, acabei de entrar no blog e eu busquei essa resposta pq também me pediram na faculdade. Tava com um trabalho p fazer. Na humildade a gente vai aprendendo mais.
[quote="simu"]depois de quase um ano...
[quote="Petronio Filho"]Poxa vida, ninguém dá um código certo não é?
Para quem teve dúvidas e perdeu horas e mais horas de busca e não encontrou nada ai segue um código que de fato funciona.
funciona, mas somente se não tiver número negativo ou maior que 9999999...
Foi por isso que escrevi que seria melhor inicializar os valores com [color=#008800]Integer.MAX_VALUE[/color] e [color=#008800]Integer.MIN_VALUE[/color]!
[quote="Petronio Filho"][quote="crazyshock"]Batman, usei o seu algoritmo porém houve uma falha,na hora de ordenar em vez de ordenar corretamente , ele da um bug, exemplo:
coloco valores de 12,70,20,50
Horaq ele ordena ele poem o 18 como menor e na lista de sequencia aparece apenas
18,70,70,70,70
tentei reformular esse alorimo mesmo assim naão tive solucao
:( GOSTEI 0
Petronio Filho
09/04/2009
[quote="simu"][quote="Bhoppus"]...
[...]
já que o vetor foi ordenado em ordem decrescente, o maior valor estará na primeira posição e o menor na última... assumindo que a ordenação tenha funcionada.
[]] GOSTEI 0
Petronio Filho
09/04/2009
Caso o vector não esteja ordenado vem aí um exemplo para pagar o menor e maior valor do vector:
public class MaiorMenor{
private int menor, maior;
public void buscarMaiorMenor(int[] vector){
menor = vector[0];
maior = vector[0];
for(int valor: vector){
if(valor<menor)
menor = valor;
if(valor>maior)
maior = valor;
}
}
}
GOSTEI 0