Length - 1

Oi Pessoal tudo bem?
Sou estudante do 3º semestre do curso de Desenvolvimento de Softwares, e estou com uma dúvida em um exercicio que achei na Internet, quero entender antes de entregar por entregar, vocês poderiam me ajudar por favor:

O exercicio se trata do Buble sort
Preciso colocar os números que entram pela linha de comando ficar em ordem crescente só que não consigo entender esse trecho de código:

for (int i=0; i<meuArray.length;i++){

 for (int j=0;j<meuArray.length-1;j++){
				
if(meuArray[j]>meuArray[j+1]){
					 
temp = meuArray[j];
					meuArray[j]= meuArray [j+1];
					meuArray[j+1]= temp;
					
 }

}

}

for (int x=0;x<meuArray.length;x++)
	System.out.print(" " + meuArray[x]);

}

A principal coisa que eu não entendi qual a funcionalidade do length -1

Aguardo resposta

E obrigada pessoal

abs

Patricia

Vamos lá…

Basicamente, vc esta rodando o vetor com dois ponteiros [i e j] e está testando: se um é maior que o outro, troque-os de posição!

Com isso vc irá varrer o seu vetor efetuando as trocas!

Tente fazer o algoritimo a partir desse código! Pode ser uma ótima maneira de aprender como essa ordenação funciona.

O lance do length-1 é pq vc está usando o [j+1] para verificar o proximo registro… com isso, colocando o for até o length - 1 vc garante que ele nunca levantará uma exceção “IndexOutOfBoundException”, que é quando vc tenta consultar uma posição que não existe em um vetor.

O bubble sort vai comparando o elemento n do vetor com o elemento n+1, sucessivas vezes. o length - 1 é para economizar comparações desnecessárias. Faça o teste de mesa que vc vai ver :slight_smile:

Abraço!

Pessoal

Valeu pela ajuda de vcs, entendi como funciona esse código.

:lol: