-
O algoritmo guarda na variável Min a posição do array v que guarda o menor conteúdo (v[i]). Compara com todos os outros valores e ao final, troca de posição para ordenar. Utiliza a variável x como temporária apenas para guardar o conteúdo.
-
min -> guarda o indice do menor elemento; x -> guarda temporariamente o valor na troca de posição;
for_01: Percorre o vetor e da a referencia inicial do indice onde encontrar o menor elemento; min = i;
for_02: Percorre o vetor a partir da segunda posição, fornecendo os indices para testar os elementos ;
if(v[j] < v[min]) { // Verifica onde está menor elemento;
v[i] = v[min]; // Coloca o menor elemento na posição do loop for_01.
-
Para acertar a questão e ganhar tempo na prova:
Basta olhar para essas 3 linhas:
x = v[i];
...I...
v[min] = x;
E perceber que nesse momento é feita uma troca com o artifício de uma variável para armazenamento temporário de valor, nesse caso o x.
Se na primeira linha, guarda-se v[i] em x, significa que já pode sobrepor o valor de v[i] (pois ele já está guardado em x). E, se descarrega-se o valor de x em v[min], só pode significar que já descarregamos v[min] em algum lugar. Nesse caso, v[min] será descarregado em v[i], que já entendemos que pode ser sobreposto.
-
Essa questão cabe recurso, visto que as atribuições dos valores no array a partir dos índices i e min ocorrem fora do escopo do primeiro for, logo, isso geraria um erro de compilação.
-
Não há nenhum erro de compilação na questão, a ordenação funciona perfeitamente.
Para testar o código online: https://www.jdoodle.com/online-java-compiler
Gabarito: d)
-
O fato de haver o ++i não faz com que a posição v[0] seja ignorada?? Fazendo com que o vetor não resulte numa ordem crescente, pois o primeiro termo sempre será 7!