1 EXERCÍCIOS SOBRE ANÁLISE DE ALGORITMOS 1a QUESTÃO Dizer se as afirmativas abaixo são verdadeiras ou falsas, justificando. 1. Seja uma árvore binária de busca de tamanho n. A complexidade de um algoritmo para fazer uma cópia dessa árvore em memória é de O(n). 2. Seja uma pilha cujos elementos são ponteiros para uma fila de tamanho n. A complexidade de um algoritmo para inserção de um elemento na fila é de O(n). 2a QUESTÃO Determine os tempos de processamento conforme o modelo detalhado e simplificado para os trechos de programas a seguir: a. b. c. d. for (int i = 0; i < n; ++i) ++k; for (int i = 1; i < n; i *= 2) ++k; for (int i = n - 1; i != 0; i /=2) ++k; for (int i = 0; i < n; ++i) if (i % 2== 0) ++k; 3a QUESTÃO Diga e justifique qual é a complexidade de pior caso dos algoritmos mostrados abaixo: ALGORITMO A for i := 1 to n do for j := 1 to m do for k := 1 to n do A[i,j] := A[i,j] + k; ALGORITMO B for i := 1 to n do j := i; while j = i do A[i,j] := A[i,j] + 2; if i >= n/2 then j := j + 1; 4a QUESTÃO Escrever as funções abaixo com a mínima notação O. a) n3 – n2 b) n + logn c) (n + 4)2 d) 4 + n(n/2) 5a QUESTÃO Considere a função f(n) = 3n2 – n + 4. Mostre que f(n) = O(n2), usando a definição. 6a QUESTÃO Considere as funções f(n) = 3n2 – n + 4 e g(n) = nlogn + 5. Usando o teorema 3.2, mostre que f(n) + g(n) = O (n2). 2 7a QUESTÃO Diga e justifique qual é a complexidade de pior caso dos algoritmos mostrados abaixo: ALGORITMO A long int aux; for ( long int i=0; i <= tam-2; i++ ) { for ( long int j=0; j<= tam-2-i; j++ ) { if ( Array[j] > Array[j+1] ) { aux = Array[j]; Array[j] = Array[j+1]; Array[j+1] = aux; } } } ALGORITMO B Para i := 1 até n faça Ler nome[i]; Fim_para; Ordenar nome[] pelo algoritmoA; ALGORITMO C Para i := 1 até n faça Para j := n até 0 com passo –n/2 faça V[j] := 3*i; Fim_para; Fim_para; ALGORITMO D Para i := 1 até n faça Para j := m até 1 com passo -1 faça Imprimir A[i,j]; Fim_para; Fim_para;