SóProvas


ID
1190299
Banca
FGV
Órgão
DPE-RJ
Ano
2014
Provas
Disciplina
Programação
Assuntos

Um programador tentou implementar o algoritmo de ordenação da bolha (bubble sort) utilizando a linguagem de programação PHP, mas produziu um código incorreto, mostrado a seguir.

<?php 
$nomes = array("Maria", "Aline", "Bianca");
$ordenado = false;

while(!$ordenado)
    $ordenado = true; 
    for( $i = 0; $i < count($nomes)-1; $i++) 
   { 
        if($nomes[$i] > $nomes[$i + 1]) 
       { 
            $nomes[$i] = $nomes[$i + 1]; 
            $nomes[$i + 1] = $nomes[$i];  
            $ordenado = false; 
        } 
    }
}
?>

Em vez de obter os nomes contidos no vetor $nomes ordenados alfabeticamente, em ordem crescente, a disposição final dos nomes no referido vetor foi, a partir da posição zero

Alternativas
Comentários
  • Nessa questão se o algoritmo de ordenação da bolha (bubble sort) de ordem crescente estivesse correto imprimiria: Aline, Bianca, Maria. Porém na questão fala que a disposição final dos nomes foi na posição zero, ou seja, no comando while vai substituir a posição zero (Maria) do vetor pela posição um (Aline) do vetor.

  • Depois de muito olhar, descobri o que faltou:

    $nomes[Maria, Aline, Bianca] (inicio)

    ...

    /For(0->1)

    $nomes[$i] = $nomes[$i + 1];  //$nomes[Maria, Aline, Bianca] passa a ser $nomes[Aline, Aline, Bianca]

    $nomes[$i + 1] = $nomes[$i];  //$nomes[Aline, Aline, Bianca] passa a ser $nomes[Aline, Aline, Bianca]

    Nao houve uma variavel para registrar o nome de Maria, simplesmente ela foi substituída por Aline no vetor, e depois Aline foi substituída por Aline, ficando o nome Aline repetido.

  • O cara esqueceu de usar uma variável auxilar na hora de trocar os valores