Verifica ordem crescente em array

19 respostas
T

Boa noite pessoal

Estou fazendo uns exercícios de java aqui…

E travei numa lógica aqui :oops:

Como verificar se um array esta em ordem crescente…

public boolean emOrdem()
	{
		for (int i = 0; i < qtdUsadas; i++)
		{
			while(a[i] <= a[i++])
			{
				return true;
			}
			
		}
		return false;
	}

Fiz isso aí… mas meu vetor esta com os seguintes valores, 8,5,111

Portanto ele retorna que é true…

Porém 8 é maior que 5…

E este vetor pode ser maior, por isso não tratei apenas 2 verificações…

Entenderam??

Enfim, acredito que muitos de vocês tenham a resposta na ponta da lingua…

Agradeço desde já!

19 Respostas

Demys_Cota

esquece

Demys_Cota

vc não pode usar o i++, na realida vc tem que usar i + 1 que não altera o valor d I,
por se usar i ++ ou ++ i
vai increventar seu i e interferir no loop.
é mesmo que i = i +1
se no loop o I é 1 no prox vai ser 3

Demys_Cota

07/04/2013 23:14:59 Assunto: Verifica ordem crescente em array
Boa noite pessoal

Estou fazendo uns exercícios de java aqui…

E travei numa lógica aqui

Como verificar se um array esta em ordem crescente…

view plaincopy to clipboardprint?

public boolean emOrdem()

{

boolean ok = false;

for (int i = 0; i < qtdUsadas; i++)

{

if(a[i] <= a[i+1])

{

ok = true;

}else{

ok = false;

}
}  
    return ok;  
}
Demys_Cota
public boolean emOrdem()

{

boolean ok = false;

for (int i = 0; i < qtdUsadas; i++)

{

if(a[i] <= a[i+1])

{

ok = true;

}else{

ok = false;

}
}

return ok;

}
T

Mutxo obrigado, mas qual a lógica, inverti os dois i++ para ++i…

E eu não entendi…

Demys_Cota

não, esquece está parte, não tinha visto que o I era utilizado no For e sendo assim não podemos utilizar i++ ou ++i,
porque seria o mesmo que incrementar o I ou seja I + I + 1, o que interferiria no for.

matheuslmota

Tiago_KA:
Mutxo obrigado, mas qual a lógica, inverti os dois i++ para ++i…

E eu não entendi…


i++ => primeiro usa a variável e depois incrementa. Por exemplo:

int i = 2; int j = i++; // j=2, e depois da atribuição, i = 3

++i => primeiro atribui depois usa a variável. Por exemplo

int i = 2; j = ++i; // j = 3 e i = 3

Outra coisa, ao postarem, usem a tag CODE.

Seu código fica assim:

public boolean emOrdem() { for (int i = 0; i < qtdUsadas; i++) { if(a[i] > a[i+1]) return false; // Se um elemento for maior que seu sucessor, retorna falso } return true; // Se chegou aqui, então não existe nenhum elemento maior que seu sucessor. Retorna true }

T

Obrigado cara,

Portanto um método para verificar um vetor ou melhor um array, se este é crescente seria:

public boolean emOrdem()
	{
		boolean ordem = false;
		for (int i = 0; i < qtdUsadas; i++)
		{
			if(a[i] <= a[i+1])
			{
				ordem = true;
			}
			else
			{
			ordem = false;
			}
		}
		return ordem;
	}
}
T

matheuslmota:
Tiago_KA:
Mutxo obrigado, mas qual a lógica, inverti os dois i++ para ++i…

E eu não entendi…


i++ => primeiro usa a variável e depois incrementa. Por exemplo:

int i = 2; int j = i++; // j=2, e depois da atribuição, i = 3

++i => primeiro atribui depois usa a variável. Por exemplo

int i = 2; j = ++i; // j = 3 e i = 3

Outra coisa, ao postarem, usem a tag CODE.

Seu código fica assim:

public boolean emOrdem() { for (int i = 0; i < qtdUsadas; i++) { if(a[i] > a[i+1]) return false; // Se um elemento for maior que seu sucessor, retorna falso } return true; // Se chegou aqui, então não existe nenhum elemento maior que seu sucessor. Retorna true }

Valeuzasso, excelente explicação agradeço a todos aew!

Muito obrigado mesmo!

Demys_Cota

matheuslmota

Tiago_KA:
Obrigado cara,

Portanto um método para verificar um vetor ou melhor um array, se este é crescente seria:

public boolean emOrdem() { boolean ordem = false; for (int i = 0; i < qtdUsadas; i++) { if(a[i] <= a[i+1]) { ordem = true; } else { ordem = false; } } return ordem; } }

Assim está errado. Por exemplo, usando o vetor 8, 5, 10.
Na primeira iteração ele vê que 8 <= 5 é falso e ordem = false. Na segunda iteração, ele vê que 5 <= 10 e ordem = true. Depois, ele retorna true e isso está errado, visto que há um elemento desordenado. O correto é fazer o contrário, procurar um elemento desordenado e caso ache, retorna falso imediatamente. Se não achar nenhum elemento desordenado, retorna true. Isso é o que meu código faz. Entendeu?

Demys_Cota
matheusImota está certo!
matheuslmota

Cara, é para usar a tag code quando for postar código. E a tag code não é usada entre <> e sim entre []

Sacou?
Demys_Cota
Valeu!!!
Demys_Cota
valeu
T

“[“code”]” “[”"/“code”]"

Demys_Cota
TESTE
Demys_Cota
teste
Demys_Cota
agora sim! 
   valeu de novo.
Criado 7 de abril de 2013
Ultima resposta 8 de abr. de 2013
Respostas 19
Participantes 3