Ao generalizar um algoritmo de ordenação para aceitar critérios distintos, que tipo de variável deve ser…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Reconhecer o conceito de metaprogramação como uma forma de generalização na construção de programas, permitindo que algoritmos sejam entrada ou saída para outros algoritmos.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Ao generalizar um algoritmo de ordenação para aceitar critérios distintos, que tipo de variável deve ser passada como parâmetro para comparar elementos e qual propriedade do algoritmo deve ser preservada se quisermos manter a ordem relativa de elementos equivalentes?
- A) Passar um parâmetro comparador (função comparador(a,b) ? inteiro). Preservar a estabilidade do algoritmo (não trocar elementos considerados iguais pelo comparador).
- B) Utilizar uma lista de elementos pré-ordenados como parâmetro.
- C) Não é necessário preservar a estabilidade do algoritmo.
- D) Passar o tamanho da lista como parâmetro e não um comparador.
- E) Passar um parâmetro booleano que define a ordem de ordenação.
✅ Resposta correta: alternativa A
Resolução passo a passo
- Ao generalizar um algoritmo de ordenação para aceitar critérios diferentes (crescente, decrescente, por campo de um registro etc.), o mecanismo padrão é passar como parâmetro uma função comparador(a, b) que retorna um inteiro: negativo se a deve vir antes de b, zero se são equivalentes e positivo caso contrário. Assim, o algoritmo fica independente do critério.
- A pergunta também quer saber qual propriedade preservar para manter a ordem relativa de elementos equivalentes. Essa propriedade é a estabilidade: um algoritmo estável não troca de posição elementos que o comparador considera iguais, de modo que, se dois elementos tinham ordem X antes da ordenação, continuam nessa ordem depois.
- Comparando com o gabarito oficial, a alternativa A está correta e coincide com a resolução feita de forma independente.
- Por que as outras estão erradas: B está errada porque uma lista pré-ordenada não define como comparar elementos em uma nova ordenação; C está errada porque, ao contrário, a estabilidade é justamente o que garante a preservação da ordem relativa pedida; D está errada porque o tamanho da lista não informa critério algum de comparação; E está errada porque um booleano só permite escolher entre duas ordens fixas (por exemplo, crescente ou decrescente), sendo insuficiente para critérios arbitrários.
💡 Dica: Considere as propriedades dos algoritmos de ordenação estável.
Alternativa por alternativa
O comparador permite definir qualquer ordem; estabilidade garante que elementos considerados iguais mantenham sua ordem original, importante em várias aplicações compostas.
O aluno acredita que, para ordenar com outro critério, basta fornecer uma lista já ordenada, como se ela servisse de referência para as comparações. Não percebe que a comparação precisa ser definida explicitamente por uma função.
Por que engana: Confundir a necessidade de um parâmetro comparador com a utilização de uma lista pré-ordenada, levando a uma implementação incorreta do algoritmo.
O aluno acha que a estabilidade é um detalhe irrelevante, pois imagina que a ordem entre elementos iguais não importa. Ignora que, em ordenações sucessivas por critérios diferentes, a estabilidade é essencial para preservar a ordenação anterior.
O aluno confunde a necessidade de informar o tamanho da lista (um dado de execução) com a necessidade de definir o critério de comparação. O tamanho não diz nada sobre como dois elementos devem ser comparados.
O aluno pensa que um parâmetro booleano basta para qualquer critério, como se 'crescente ou decrescente' cobrisse todas as formas de ordenar. Não percebe que critérios como ordenar por um campo específico de um registro exigem uma função de comparação.
Raio-X da questão
algoritmo de ordenação
avaliacao
algoritmo de ordenação · funções como parâmetros
Revisar os conceitos de algoritmos de ordenação e estabilidade.
Confundir a necessidade de um parâmetro comparador com a utilização de uma lista pré-ordenada, levando a uma implementação incorreta do algoritmo.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Dado dois algoritmos de ordenação que usam critérios distintos (por preço e por nome), que mudança permite criar um…
- Projete a assinatura de um algoritmo de ordenação generalizado que permita reutilizar o mesmo código para diferentes…
- Um algoritmo de ordenação atualmente compara itens pelo campo "preço". Qual parâmetro permite reutilizar o mesmo…
- Ao implementar num algoritmo a ordenação de uma matriz de registros 'tarefas' por campo 'prioridade', que propriedade do…
- Ao generalizar um algoritmo de filtragem para aceitar diferentes critérios sem alterar seu corpo, que tipo de parâmetro…
- Ao implementar um algoritmo de ordenação para uma matriz 'alunos' primeiro por 'nota' e em seguida por 'nome' sem perder…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
