Como Apresentar o Maior e Menor Numero!

[quote=Paulo Silveira]O codigo do ricardo esta perfeito. Nao precisa ordenar!! Mas ainda da pra melhorar.

Ele faz praticamente 2*n comparacoes… da pra fazer com uma quantidade menor que isso de comparacoes. Quem se atreve?
[/quote]

Na verdade são 3 comparações por item. Tem também a comparação do “for”. hehehe

E o for conta como comparação? Não sei… bem, eu cheguei nisso aqui, comparando por pares:

int listanumeros[] = new int[5];
listanumeros[0]=15;
listanumeros[1]=30;
listanumeros[2]=50;
listanumeros[3]=05;
listanumeros[4]=03;
    	 
int maior = Integer.MIN_VALUE;
int menor = Integer.MAX_VALUE;
int lastMaior = listanumeros[0];
int lastMenor = Integer.MAX_VALUE;
    	
for (int i=0; i<listanumeros.length-1; i=i+2) {
	maior = listanumeros[i+1];
	menor = listanumeros[i];
	if (listanumeros[i] > listanumeros[i+1]) {
                maior = listanumeros[i];
                menor = listanumeros[i+1];
	}
   			
	if (maior > lastMaior) {
                lastMaior = maior;
	}
	if (menor < lastMenor) {
                lastMenor = menor;
	}
}
    	
if (listanumeros.length%2==1) {
	if (listanumeros[listanumeros.length-1]< lastMenor) {
                lastMenor = listanumeros[listanumeros.length-1];
	}
	else {
		if (listanumeros[listanumeros.length-1]> lastMaior) {
                       lastMaior = listanumeros[listanumeros.length-1];
		}
	}
}
    	
System.out.println("maior = " + lastMaior);
System.out.println("menor = " + lastMenor);

Galera aproveitando o tópico, como posso colocar uns 3 numero ou mais em ordem crescente ou decrescente ?
estou tentando fazer mais não consigo…alguem pode me explicar mais n em java faz em pseudo-código por favor.

[quote=marciobarroso]Paulo …

Tentei, mas não conseguí … como seria possível implementar algo com complexidade 3N/2 ???

[]'s[/quote]

Arvores Binárias?

.

E o for conta como comparação? Não sei… [/quote]

for (int i=0;[color=red] i<listanumeros.length-1[/color]; i=i+2) {

No caso, faz a comparação a cada loop para determinar se realiza outro (loop) ou não.

Se você só quisesse determinar o valor máximo, a complexidade seria O(n) (ou seja, n comparações), porque você precisa varrer todos os elementos (já que eles estão em qualquer ordem), não dá para ser menor que isso.

O que o Paulo está dizendo é que é possível achar o máximo e o mínimo, em menos de 2 n comparações.

Em complexidade de algoritmos os índices dos loops normalmente não são levados em consideração, somente as operações “lentas” e “significativas” (que no caso é a comparação).

(Uma comparação de números de ponto flutuante é razoavelmente rápida, mas não uma de strings, se as strings forem arbitrariamente grandes. É por isso que em ordenação a operação de comparação é considerada “significativa”.

o codigo do dreamspeaker me parece correto

a sacada é fazer uma comparacao dois a dois, e depois so coparar o menor local com o menor global e a mesma coisas pro maior. da 3 comparacoes para cada par de numeros. 3n/2.

E -2 comparacoes por causa do primeiro par nao ter com quem comparar…