Seja um array de inteiros de 32 bits com 10.000 elementos, g...
Nessas condições, qual algoritmo irá ordenar esse array com um consumo de tempo, em seu caso médio, proporcional ao consumo de tempo do pior caso do Quick sort?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a C - Insertion sort.
Vamos entender o raciocínio por trás da questão e por que essa alternativa é a correta.
A questão aborda a ordenação de um array de inteiros de 32 bits com 10.000 elementos, gerados e posicionados de forma aleatória. Para resolver essa questão, é necessário conhecer o comportamento dos algoritmos de ordenação em termos de complexidade de tempo.
O algoritmo de Quick sort é conhecido por ter um consumo de tempo no caso médio de O(n log n). No entanto, no seu pior caso, o Quick sort pode chegar a O(n²). A questão pede um algoritmo cujo consumo de tempo no caso médio seja proporcional ao pior caso do Quick sort, ou seja, O(n²).
Vamos analisar cada alternativa:
A - Bucket sort: Este algoritmo, no caso médio, tem uma complexidade de O(n + k), onde k é o número de baldes. Portanto, ele não atende ao critério de ter um caso médio proporcional ao pior caso do Quick sort.
B - Heap sort: Este é um algoritmo de ordenação com complexidade de tempo garantida de O(n log n) tanto no melhor, médio quanto no pior caso. Não é proporcional ao pior caso do Quick sort.
C - Insertion sort: Este algoritmo tem um consumo de tempo no caso médio de O(n²), que corresponde exatamente ao pior caso do Quick sort. Portanto, esta é a alternativa correta.
D - Merge sort: Este algoritmo possui complexidade de tempo de O(n log n) no melhor, médio e pior caso. Portanto, ele também não é proporcional ao pior caso do Quick sort.
E - Tree sort: Este algoritmo depende da estrutura de uma árvore binária de busca. No caso médio, sua complexidade é O(n log n), mas no pior caso, pode ser O(n²). No entanto, a complexidade média não é proporcional ao pior caso do Quick sort.
Por fim, a alternativa C - Insertion sort é a correta, pois é o único algoritmo listado que possui um consumo de tempo no caso médio proporcional ao pior caso do Quick sort, ou seja, O(n²).
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
| Algoritmo | Melhor Caso | Caso Médio | Pior Caso |
|---------------|-----------------|-----------------|-----------------|
| Bucket Sort | O(n + k) | O(n + k) | O(n^2) |
| Heap Sort | O(n log n) | O(n log n) | O(n log n) |
| Insertion Sort| O(n) | O(n^2) | O(n^2) |
| Merge Sort | O(n log n) | O(n log n) | O(n log n) |
| Tree Sort | O(n log n) | O(n log n) | O(n^2) |
| Bubble Sort | O(n) | O(n^2) | O(n^2) |
| Quick Sort | O(n log n) | O(n log n) | O(n^2) |
*Pra decorar*
Melhor Médio Pior
Bubble On On2 On2
Insertion On On2 On2
Selection On2 On2 On2
Merge On(logn On(logn On(logn
Quick On(logn On(logn On2
Shell On(logn On(logn On2
Heap On(logn On(logn On(logn
De forma resumida e objetiva:
QuickSort tem, no pior caso, a complexidade de O(n²).
InsertionSort tem, no pior caso e no caso médio a complexidade de O(n²).
Mas o pior caso do quick é o(n2) e o caso médio do bubbles sort é o(n2) não estaria correto bubbles sort também?
Essa questão prova que não passa em concurso quem sabe mais, mas sim quem decorou mais.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo