As motivações para se ordenar um arranjo de dados são variadas. Por exemplo, imagine que a agenda de seu celular não apresenta função de busca por contatos e, para piorar, seus dados estão completamente desordenados. Não seria muito mais fácil organizar seus contatos em ordem alfabética para que nós, humanos, possamos utilizar a agenda de maneira mais adequada?
Fonte: OLIVEIRA, P. M. de; PEREIRA, R. de L. Estruturas de Dados II. Maringá: UniCesumar, 2019.
O algoritmo Insertionsort realiza, justamente, esse tipo de tarefa: ordenação. Observe uma de suas implementações a seguir:
Linha Código
01 void insertionSort(int vec[], int tam)
02 {
03 int i, j, tmp;
04 for(i = 1; i < tam; i++){
05 j = i;
06 while((vec[j] < vec[j - 1]) && (j!=0)){
07 tmp = vec[j];
08 vec[j] = vec[j-1];
09 vec[j-1] = tmp;
10 j--;
11 }
12 }
13 }
Fonte: adaptado de: OLIVEIRA, P. M. de; PEREIRA, R. de L. Estruturas de Dados II. Maringá: UniCesumar, 2019.
Com base no trecho de código anterior, analise as afirmativas a seguir:
I. Pode-se dizer que esse algoritmo foi programado para ordenar o arranjo “vec[]” em ordem não-decrescente (crescente).
II. Na melhor das hipóteses, esse algoritmo realizará um número de iterações proporcional à variável “tam”.
III. Há um erro semântico nesse algoritmo, já que, na linha de código 10, o correto seria termos a expressão “j++”.
É 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.
ATENÇÃO: Não responda se você não souber, NÃO COPIE DO CHAT GPT!
Lista de comentários
Resposta:
Alternativa 3
I e III, apenas
Explicação:
esse algoritimo seguira fazendo interação enquando forem sendo incluidos dados, pois ele não tem um stop
ele deveria ter na linha 10 uma variavel java de incremento j++ para ser um contador/ordenador
Resposta:
apenas I e II
Explicação:
III errada se vc colocar incremento j++ nao vai colocar em ordem - testei a funcao portanto somente as duas primeiras.
isso vc coloca no main()
int i;
int vec[] = {10,15,4,50,42,38,17}; // vec recebe seis parametros
int tam = sizeof(vec)/sizeof(vec[0]); // aqui aloca memoria dinamicamente
insertionSort(vec, tam);
for(i = 0; i < tam; i++){
printf("%d ", vec[i]);
}
so testar pra ver que se colocar j++ nao vai dar certo ok