O algoritmo abaixo é um algoritmo de ordenação: proc in...
proc insertionSort(int[] arr)
int tamanho <- tam(arr);
int i, j, aux;
para i de 1 incr 1 até tamanho-1 faça
aux <- arr[i];
para j de i-1 incr -1 até (j >= 0 e aux < arr[j]) faça
arr[j+1] <- arr[j];
arr[j+1] <- aux;
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a A - por inserção.
Vamos entender melhor por que essa alternativa está correta e por que as outras não estão:
A - por inserção: O algoritmo apresentado é um exemplo clássico do Insertion Sort (ou ordenação por inserção). No Insertion Sort, a ideia é construir a lista ordenada uma a uma, pegando cada elemento do array e inserindo-o na posição correta em relação aos elementos anteriores. O trecho de código fornecido ilustra exatamente isso: ele percorre o array a partir do segundo elemento, e para cada elemento, coloca-o na posição correta em relação aos elementos à sua esquerda. Este comportamento é típico da ordenação por inserção.
B - por troca: A ordenação por troca geralmente se refere ao Bubble Sort ou algum outro algoritmo que envolve a troca de elementos adjacentes para colocá-los na ordem correta. No algoritmo fornecido, não há troca de elementos adjacentes; em vez disso, os elementos são movidos para frente, o que não caracteriza uma ordenação por troca.
C - por seleção: A ordenação por seleção (ou Selection Sort) funciona encontrando o menor (ou maior) elemento na parte não ordenada do array e trocando-o com o primeiro elemento da parte não ordenada. Esse processo é repetido até que a lista toda esteja ordenada. O algoritmo fornecido não busca o menor elemento repetidamente, mas sim insere cada elemento na posição correta de forma incremental.
D - QuickSort: O QuickSort é um algoritmo de ordenação muito diferente, que utiliza a técnica de divisão e conquista para ordenar. Ele escolhe um pivô e particiona o array em torno desse pivô, ordenando recursivamente as subpartições. O algoritmo fornecido não utiliza nenhum pivô nem faz partições recursivas, então não pode ser um QuickSort.
E - BubbleSort: O BubbleSort ordena a lista repetidamente trocando os elementos adjacentes que estão fora de ordem, fazendo com que os maiores elementos "borbulhem" até o final da lista. Novamente, no algoritmo fornecido, não há troca de elementos adjacentes de forma repetitiva, caracterizando o Insertion Sort e não o BubbleSort.
Espero que estas explicações tenham ajudado a entender melhor o funcionamento do algoritmo e por que a alternativa correta é a A - por inserção. Se tiver mais alguma dúvida ou precisar de mais detalhes, fique à vontade para perguntar!
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
Ordenação por Inserção
Método preferido dos jogadores de cartas. A cada momento existem duas partes na lista: uma ordenada (destino) e outra não ordenada (fonte). Inicialmente a lista destino tem apenas o primeiro elemento, e a fonte os demais elementos. Em cada passo a partir de i=2, seleciona-se o i-ésimo item da lista fonte. Deve-se colocá-lo no lugar apropriado na lista destino, de acordo com o critério de ordenação.
Gabarito A
A questão se intrega na primeira linha vejam:
proc insertionSort(int[] arr)
Inserção - método preferido dos jogadores de cartas. Divide o vetor em 2 (classificado e não classificado).
Tem o maior (complexidade O(n²)) número de trocas quando o vetor está ordenado de forma inversa à ordem do procedimento.
"Retroceder Nunca Render-se Jamais !"
Força e Fé !
Fortuna Audaces Sequitur !
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo