GeraProva GeraProva Provas com IA para professores do Brasil
Computação9º anoBNCC EF69CO04Difícil⏱ longo

Projete em pseudocódigo uma função recursiva quicksort(L) que ordena uma lista L de inteiros em ordem não…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF69CO04

Construir soluções de problemas usando a técnica de decomposição e automatizar tais soluções usando uma linguagem de programação.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Projete em pseudocódigo uma função recursiva quicksort(L) que ordena uma lista L de inteiros em ordem não crescente. Explique a escolha do pivô, o caso base, o passo recursivo e por que a recursão termina.

✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.

Resposta esperada

Pseudocódigo: funcao quicksort(L): se tamanho(L) <= 1 entao retorne L fimse pivot := L[0] // escolher o primeiro elemento como pivô maiores := [x em L[1..] se x >= pivot] menores := [x em L[1..] se x < pivot] return concatenar(quicksort(maiores), [pivot], quicksort(menores)) Explicação modelo: - Escolha do pivô: usar L[0] é simples; qualquer elemento pode ser pivô, mas escolhas heurísticas (mediana) podem melhorar desempenho médio. - Caso base: listas com tamanho 0 ou 1 já estão ordenadas; retornam sem novas chamadas. - Passo recursivo: particionar L em duas sublistas menores conforme pivô e ordenar recursivamente cada parte; então concatenar maior, pivô e menor para ordem não crescente. - Terminação: em cada chamada o pivô é removido da sublista original, de modo que as sublistas têm tamanho estritamente menor, garantindo que as chamadas recursivas alcancem o caso base em profundidade finita. - Observação: algoritmo tem corretude pela divisão em elementos >= e < pivô; estabilidade não é garantida com esta partição simples.

Explicação

A escolha do pivô como o primeiro elemento simplifica a implementação e permite a divisão da lista em duas partes, facilitando a ordenação. O caso base assegura que listas pequenas não gerem chamadas recursivas desnecessárias, enquanto o passo recursivo garante que a lista seja dividida em sublistas menores, aproximando-se do caso base. A recursão termina porque cada chamada reduz o tamanho das sublistas, levando eventualmente a listas de tamanho 0 ou 1, que são trivialmente ordenadas.

Raio-X da questão

Dificuldade Difícil
Bloom Analisar
Leitura alto
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade multipla
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ interpretativa🧩 desafio
🎯 Conceito central

algoritmo quicksort

📌 Objetivo

avaliacao

🧱 Pré-requisitos

funções recursivas · algoritmos de ordenação

📚 Reveja

Revisar conceitos de recursão e algoritmos de ordenação.

⚠️ Erro mais comum

O aluno pode confundir a escolha do pivô, optando por um elemento que não garante a eficiência do algoritmo, como o menor ou maior elemento da lista.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Estratégias de solução de problemas - Decomposição

🔎 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

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.