Questões de Tecnologia da Informação · COMVEST UFAM

Tecnologia da InformaçãoOutros temasCOMVEST UFAM 2016

UFAM

Questão de Tecnologia da Informação

7

O mergesort é um algoritmo de ordenação do tipo dividir-para-conquistar. Sua ideia básica consiste em dividir o problema em vários subproblemas, e resolver esses subproblemas por meio da recursividade e, em seguida,após todos os subproblemas terem sido resolvidos,ocorre a conquista, que é a união das resoluções dos subproblemas.O algoritmo mergesort, apresentado em seguida, está codificado em C/C++.Esse algoritmo ordena o vetor de inteiros a[p],..., a[r](onde, p<r) usando um vetor auxiliar b[p],..., b[r].O vetor a[ ] é dividido recursivamente ao meio em duas instâncias menores, que são ordenadas e então colocadas juntas, ordenando todo o vetor. No código estão faltando as linhas que fazem a divisão por recursão (linhas 7 e 8) e as linhas que concretizam a fase de conquista, unindo todas as intercalações no vetor principal (linhas 11 e 12). 1. voidmergesort(int a[], int p, int r) 2. { 3. inti,j,k,m; 4. if (r > p) 5. { 6. m = (r + p)/2; 7. … 8. … 9. for (i = m+1; i> p; i--) b[i-1] = a[i-1]; 10. for (j = m; j < r; j++) b[r+m-j] = a[j+1]; 11. ... 12. ... 13. } 14. } As linhas 7,8, 11 e 12, que complementam o código do mergesort de maneira CORRETA, são:

Sua resposta

Mais questões de Outros temas

Questão de prova oficial, com o gabarito definitivo publicado pela banca. Reproduzida para fins de estudo.