Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Análise de Complexidade de Algoritmos: Casos de Estudo - Prof. Bockorni, Exercícios de Organização e Ordem Social

O estudo de casos de complexidade de algoritmos, com exemplos de códigos em c++ e análises de complexidade de o(1), o(log n), o(n), o(n^2), o(2^n) e o(n log n).

Tipologia: Exercícios

2022

Compartilhado em 17/04/2022

Ricorock7
Ricorock7 🇧🇷

1 documento

1 / 5

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Caso O(1)
#include<iostream>
Using namespace std;
Int main(){
int x = 2, y = 3; //O(1)
Int z = x+y;//O(1)
Cout<<z
//F(N)=O(1) + O(1) = O(1)
//Sendo costante esse aqui e O(1)
}
Caso 2 O (log N)
int example(int n)
{
While (n>1)//O(1)
{`
n = n /2;//O(1)
}
//f(N) = O(1 * O(1) + (O (N)) = O(O(1) +O(LOG N) = O(LOG N)
//Aqui podemos ver que somente uma escolha pode ser feita assim fazendo o algoritimo virar
0(log N)
}
Caso 3
Bool contains(Ilist elements, int value)
{
Foreach(var element in elements)
{
If (element == value)O(N)
Return true;//O(1)
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe Análise de Complexidade de Algoritmos: Casos de Estudo - Prof. Bockorni e outras Exercícios em PDF para Organização e Ordem Social, somente na Docsity!

Caso O(1) #include Using namespace std; Int main(){ int x = 2, y = 3; //O(1) Int z = x+y;//O(1) Cout<<z //F(N)=O(1) + O(1) = O(1) //Sendo costante esse aqui e O(1) } Caso 2 O (log N) int example(int n) { While (n>1)//O(1) {` n = n /2;//O(1) } //f(N) = O(1 * O(1) + (O (N)) = O(O(1) +O(LOG N) = O(LOG N) //Aqui podemos ver que somente uma escolha pode ser feita assim fazendo o algoritimo virar 0(log N) } Caso 3 Bool contains(Ilist elements, int value) { Foreach(var element in elements) { If (element == value)O(N) Return true;//O(1)

Return false//(O1) //O(2 * O(1) + (ON)) = O(O(1) + (O(N))= O(N) //Podemos ver aqui que o input vai aumentar com os comandos que o usuario colocar fazenod assim virar um O(N) } Caso 4 Public void bubble_sort(int[] input) { Bool hasSwapped Do{ HasSwapped = false; For (var sort = 0; sort< input.Leght – 1; sort++)//O(N) { If (input[sort] > input [sort +1]))// { Var oldvalue = input[sort +1];// Input [sort + 1] = input[sort];// Input[sort] = oldvalue;// hasSwapped = true;// } } } while (hasSwapped); //O(N) //Aqui vemos que e O(N2) Pois temos dois O(N) Que tem que ser feitos para o programa funcionar } Caso 5 {

}private static int Partition(int[] arr, int left, int right) { int pivot = arr[left]; while (true)O(N) { while (arr[left] < pivot)O(N) { left++; } while (arr[right] > pivot)O(N) { right--; } if (left < right) { if (arr[left] == arr[right]) return right; int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } else { return right; } //Aqui podemos ver que ele tem que resolver múltiplos logs de N para poder realizar sua tarefa sendo assim um O(N LOG N); } } #include Using namespace std; Int main(){ Unsigned int fact (unsigned int n){ If (n== o)// O(1) Return 1;//O(1) Return n * fact (n-1);//O(1) } For (int i = 1; i <= fact (n); i ++)//O(N!)({ cout<<”ei, eu estou ocupando olhanda para : “ << i;

//Aqui podemos ver que o numero de vezes que vai sair será o fatorial de quantos você colocar em N que nesse caso pode ser 5 seria o fatorial de 5 que seria 120 vezes }