IDNLearner.com, onde suas perguntas encontram respostas claras e concisas. Descubra respostas profundas para suas perguntas com a ajuda de nossa comunidade de profissionais altamente qualificados.

Entre os diversos algoritmos de ordenação existentes, alguns são famosos por se comportar de maneira ineficiente em qualquer situação, independentemente da distribuição dos dados a serem ordenados. É o caso de algoritmos como o Bubblesort ou o Selectionsort que, em linhas gerais, apresentam complexidade quadrática quanto ao esforço computacional para se ordenar um arranjo linear.
Fonte: OLIVEIRA, P. M. de; PEREIRA, R. de L. Estruturas de Dados II. Maringá: UniCesumar, 2019.

O trecho de código a seguir apresenta uma das possíveis implementações para o Selectionsort:


void selectionSort(int vec[], int tam){
int i, j, min, tmp;
for (i = 0; i < (tam-1); i++)
{
min = i;
for (j = (i+1); j < tam; j++) {
if(vec[j] < vec[min]) {
min = j;
}
}
if (i != min) {
tmp = vec[i];
vec[i] = vec[min];
vec[min] = tmp;
}
}
}

Fonte: adaptado de: OLIVEIRA, P. M. de; PEREIRA, R. de L. Estruturas de Dados II. Maringá: UniCesumar, 2019.

Levando em consideração a implementação do Selectionsort, analise as afirmativas a seguir:

I. Esse método de ordenação de vetores abortará o laço "for" da linha 06 caso a condição da linha 07 seja satisfeita.
II. As operações das linhas de código 12, 13 e 14 servem para posicionar o “menor elemento até então” em sua posição final ordenada.
III. Ao final de cada nova iteração do laço compreendido entre as linhas 03 e 16, o arranjo caminhará “uma posição a mais em relação à ordenação completa”.

É correto o que se afirma em:
Alternativas

Alternativa 1:
I, apenas.

Alternativa 2:
I e II, apenas.

Alternativa 3:
I e III, apenas.

Alternativa 4:
II e III, apenas.

Alternativa 5:
I, II e III.