·
Sistemas de Informação ·
Estrutura de Dados
· 2022/1
Send your question to AI and receive an answer instantly
Recommended for you
7
Atividade Pratica Sistemas Operacionais - Simulacao de Escalonamento de Processos
Estrutura de Dados
IFF
3
Trabalho Acadêmico - Implementação de Hash Map e Dicionário de Idiomas em C
Estrutura de Dados
IFES
1
Exercícios de Programação com Vetores
Estrutura de Dados
FAST
5
Prova 2 Estrutura de Dados TAD Lista Ifes Campus Serra BSI 2023-2
Estrutura de Dados
IFES
2
Trabalho de Grafos
Estrutura de Dados
IFG
6
Introdução ao Conceito de Pilhas e Filas Utilizando Listas Encadeadas
Estrutura de Dados
IFF
2
Atividade Complementar A1
Estrutura de Dados
FMU
5
Lista de Exercicios Avaliativa 2 Arquivos e Recursividade em C
Estrutura de Dados
IFF
5
Atividade Avaliativa 2 - Implementacao de Pilha Estatica para Analise de Expressoes
Estrutura de Dados
IFF
1
Modelo de Dados Delivery - SQL Scripts, PLSQL e Massa de Dados
Estrutura de Dados
ESPM
Preview text
Defina qual é a complexidade do algoritmo abaixo e explique o raciocínio: def buscaSequencial(lista, chave): indice = 0 for número in lista: if número == chave: return indice indice = indice + 1 return -1 Diga qual a complexidade do algoritmo abaixo e explique, textualmente, como chegou nessa conclusão: def fat(n): fact = 1 for i in range(1,n+1): fact = fact * i return fact Para o algoritmo abaixo, calcule a complexidade e descreva o cálculo para chegar nessa conclusão: def sort(array): for p in range(0, len(array)): current_element = array[p] while p > 0 and array[p - 1] > current_element: array[p] = array[p - 1] p -= 1 array[p] = current_element Esse algoritmo de ordenação, para cada posição p do array, verifica da posição p até 0 se o elemento da posição p é maior que o atual, fazendo trocas, levando sempre o maior número para a posição p. Deixando de lado os custos constantes, o primeiro laço executa n vezes, sendo n o tamanho do array. Em seguida para cada posição do array, percorremos de p até 0, que no pior caso(quando array[p-1] > current_element e p for a última posição do vetor( vai ser executado n vezes também, pois caminha o array todo, de p até 0). Um detalhe importante é que o laço while só é executado quando (p > 0 e quando array[p-1] > current_element ) então, para as iterações que a condição não é válida, ele não é computado. Mas, como a complexidade é uma representação geral para o código, temos (O(n) (primeiro laço) * (O(n-1) (n-1 pois quando p == 0 ele não é computado). Podemos escrever essa complexidade como (O(n²)), uma vez que n² > n * (n-1).
Send your question to AI and receive an answer instantly
Recommended for you
7
Atividade Pratica Sistemas Operacionais - Simulacao de Escalonamento de Processos
Estrutura de Dados
IFF
3
Trabalho Acadêmico - Implementação de Hash Map e Dicionário de Idiomas em C
Estrutura de Dados
IFES
1
Exercícios de Programação com Vetores
Estrutura de Dados
FAST
5
Prova 2 Estrutura de Dados TAD Lista Ifes Campus Serra BSI 2023-2
Estrutura de Dados
IFES
2
Trabalho de Grafos
Estrutura de Dados
IFG
6
Introdução ao Conceito de Pilhas e Filas Utilizando Listas Encadeadas
Estrutura de Dados
IFF
2
Atividade Complementar A1
Estrutura de Dados
FMU
5
Lista de Exercicios Avaliativa 2 Arquivos e Recursividade em C
Estrutura de Dados
IFF
5
Atividade Avaliativa 2 - Implementacao de Pilha Estatica para Analise de Expressoes
Estrutura de Dados
IFF
1
Modelo de Dados Delivery - SQL Scripts, PLSQL e Massa de Dados
Estrutura de Dados
ESPM
Preview text
Defina qual é a complexidade do algoritmo abaixo e explique o raciocínio: def buscaSequencial(lista, chave): indice = 0 for número in lista: if número == chave: return indice indice = indice + 1 return -1 Diga qual a complexidade do algoritmo abaixo e explique, textualmente, como chegou nessa conclusão: def fat(n): fact = 1 for i in range(1,n+1): fact = fact * i return fact Para o algoritmo abaixo, calcule a complexidade e descreva o cálculo para chegar nessa conclusão: def sort(array): for p in range(0, len(array)): current_element = array[p] while p > 0 and array[p - 1] > current_element: array[p] = array[p - 1] p -= 1 array[p] = current_element Esse algoritmo de ordenação, para cada posição p do array, verifica da posição p até 0 se o elemento da posição p é maior que o atual, fazendo trocas, levando sempre o maior número para a posição p. Deixando de lado os custos constantes, o primeiro laço executa n vezes, sendo n o tamanho do array. Em seguida para cada posição do array, percorremos de p até 0, que no pior caso(quando array[p-1] > current_element e p for a última posição do vetor( vai ser executado n vezes também, pois caminha o array todo, de p até 0). Um detalhe importante é que o laço while só é executado quando (p > 0 e quando array[p-1] > current_element ) então, para as iterações que a condição não é válida, ele não é computado. Mas, como a complexidade é uma representação geral para o código, temos (O(n) (primeiro laço) * (O(n-1) (n-1 pois quando p == 0 ele não é computado). Podemos escrever essa complexidade como (O(n²)), uma vez que n² > n * (n-1).