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.

Resposta :

Outras perguntas