Array
(
)

Vetor - maior e menor elemento

Bruno
   - 09 abr 2009

Sr´s, bom dia.... eu tenho o seguinte código: 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); 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.

Carlos Heuberger
   - 09 abr 2009


Citação:
="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.. o que eu estou fazendo de errado ?
int menor = 0; 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. []]

0
|
0

Carlos Heuberger
   - 09 abr 2009

PS: obviamente o mesmo erro vai ocorrer com o maior, se tiver somente valores negativos dentro do vetor...

0
|
0

Deh
   - 09 abr 2009

Segue um código legalzinho: #Código

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();
	}
}

0
|
0

Bruno
   - 09 abr 2009

Sr´s... Muito obrigado pela ajuda, consegui fazer o que queria. Bruno

0
|
0

Roni
   - 26 mar 2011

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 :(

0
|
0

Petronio Filho
   - 20 mar 2012

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.

0
|
0

Petronio Filho
   - 20 mar 2012


Citação:
="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

0
|
0

Petronio Filho
   - 20 mar 2012

depois de quase um ano...
Citação:
="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 Integer.MAX_VALUE[/color] e Integer.MIN_VALUE[/color]!
Citação:
="Petronio Filho"]
Citação:
="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
será? Na verdade nem tem questão... Penso que o algoritmo do batman está correto! Funciona perfeitamente com os valores 12,70,20,50. É muito estranho o crazyshock ter obtido um array com uma posição adicional - resultado tem cinco elementos, mas a entrada somente 4 - e com o número 18 que nem consta nas dados de entrada... Deve ter errado na hora de copiar...

0
|
0

Lucas Iorio
   - 21 mar 2012

Não sei qual seria o exercício, e não li todos os post, não poderia ser aassim? #Código


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);
		}
	}
}

0
|
0

Petronio Filho
   - 22 mar 2012

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.
Citação:
="simu"]depois de quase um ano...
Citação:
="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 Integer.MAX_VALUE[/color] e Integer.MIN_VALUE[/color]!
Citação:
="Petronio Filho"]
Citação:
="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
será? Na verdade nem tem questão... Penso que o algoritmo do batman está correto! Funciona perfeitamente com os valores 12,70,20,50. É muito estranho o crazyshock ter obtido um array com uma posição adicional - resultado tem cinco elementos, mas a entrada somente 4 - e com o número 18 que nem consta nas dados de entrada... Deve ter errado na hora de copiar...

0
|
0

Petronio Filho
   - 22 mar 2012


Citação:
="simu"]
Citação:
="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. []]
To de acordo com o Simu... e se tiver de ordem ascendente na primeira posição será o menor valor e o da última será o maior valor.

0
|
0

Petronio Filho
   - 22 mar 2012

Caso o vector não esteja ordenado vem aí um exemplo para pagar o menor e maior valor do vector: #Código

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;
	     }
    }
}

0
|
0