O algoritmo abaixo é um algoritmo de ordenação: proc in...

Próximas questões
Com base no mesmo assunto
Ano: 2012 Banca: FUNCAB Órgão: MPE-RO Prova: FUNCAB - 2012 - MPE-RO - Analista de Sistemas |
Q222045 Algoritmos e Estrutura de Dados
O algoritmo abaixo é um algoritmo de ordenação:

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; 
Alternativas

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