Imagem de fundo

Considere os algoritmos de ordenação sortA e sortB listados...

Considere os algoritmos de ordenação sortA e sortB listados a seguir, para ordenação de vetores em ordem crescente descrito em linguagem C++.


template <typename T> void sortA(T v[], int n)

{

for (int i=0; i <n; i ++)

for (int j=i; (j >0) && (v[j] < v[j-1]); j--)

swap(v, j, j-1);

}

template <typename T> void sortB(T v[], int n)

{

for (int i=0; i < (n-1); i++){

int lowindex=i;

for (int j=n-1; j > i; j--){

if (v[j] < v[lowindex]) lowindex=j;

}

swap(v, lowindex, i);

}

}

template <typename T> void swap(T v[], int i, int j){

T temp;

temp=v[i];

v[i]= v[j];

v[j]= temp;

}


É CORRETO apenas o que se afirma em:


A

O número de execuções da função swap no sortA é constante independentemente do vetor a ser ordenado.


B

No algoritmo sortB, o valor lowindex e i será sempre diferente na chamada do procedimento swap.


C

O algoritmo sortA é vantajoso quando o vetor a ser ordenado está em ordem totalmente decrescente.


D

Dependendo do valor inicial do vetor, o sortB pode exigir menos chamadas da função swap que o sortA.