SóProvas


ID
2351512
Banca
FCC
Órgão
TRT - 11ª Região (AM e RR)
Ano
2017
Provas
Disciplina
Programação
Assuntos

Considere a classe Java abaixo.

public class Dados { 
    public static void main(String[] args) { 
         int i, n, j, min, x; 
         int v[] = {7, 1, 3, 8, 4, 10, 0, 5, 2, 9};
        n = v.length;
         for (i = 0; i < n - 1; ++i) {
            min = i;
            for (j = i + 1; j < n; ++j) { 
              if (v[j] < v[min]) { 
                 min = j;
              }
          } 
          x = v[i]; 
            ...I...
        v[min] = x; 
       }
    }
}

Para que os valores do vetor v sejam colocados em ordem crescente, a lacuna I deverá ser preenchida por 

Alternativas
Comentários
  • 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!