Você está na página 1de 2

prof. Éfren L.

Souza
UFOPA – Universidade Federal do Oeste do Pará
IEG – Instituto de Engenharia e Geociências
PC – Programa de Computação
Disciplina – Projeto e Análise de Algoritmos

Lista de Exercícios III


Notação Assintótica

𝑛𝑛3
1. Expresse a função 𝑓𝑓(𝑛𝑛) = − 100𝑛𝑛2 − 100𝑛𝑛 + 3 em termos da notação Θ.
1000

2. É verdade que 2𝑛𝑛+1 = 𝑂𝑂(2𝑛𝑛 )? É verdade que 22𝑛𝑛 = 𝑂𝑂(2𝑛𝑛 )?

3. Utilizando as definições para as notações assintóticas, prove se as afirmativas


abaixo são verdadeiras ou falsas.
a. 3𝑛𝑛3 + 2𝑛𝑛2 + 𝑛𝑛 + 1 = 𝑂𝑂(𝑛𝑛3 )
b. 7𝑛𝑛2 = 𝑂𝑂(𝑛𝑛)
c. 5𝑛𝑛2 + 7𝑛𝑛 = 𝜃𝜃(𝑛𝑛2 )
d. 6𝑛𝑛3 + 5𝑛𝑛2 ≠ 𝜃𝜃(𝑛𝑛2 )
e. 9𝑛𝑛3 + 3𝑛𝑛 = Ω(𝑛𝑛)

4. Explique porque a declaração “O tempo de execução do algoritmo A é no


mínimo 𝑂𝑂(𝑛𝑛2 )” não tem sentido.

5. Calcule a complexidade do algoritmo de busca binária abaixo. Tenha em


mente quantas vezes você deve dividir 𝑛𝑛 por 2 até que laço termine.
int buscaBinaria(int[] array, int valor){
int inicio = 0;
int fim = array.length-1;
while(inicio <= fim){
int meio = (inicio+fim)/2;
if( valor == array[meio] )
return meio;
else if(valor > array[meio])
 prof. Éfren L. Souza

inicio = meio+1;
else
fim = meio-1;
}
return -1;
}

6. O algoritmo abaixo retorna o maior valor de um conjunto de valores dado


como entrada. Calcule a complexidade desse algoritmo e discuta as
diferenças e semelhanças com o algoritmo de busca linear.
int max(int[] a) {
int max = a[0];
for( int i=1; i<a.length; i++ )
if ( a[i] > max ) max = a[i];
return max;
}

2

Você também pode gostar