Você está na página 1de 4

Unip – Campus de Araraquara

Ciências da Computação – Ciência da Computação Integrada

Lista de Exercícios I (Revisão de E.D. e Complexidade Algoritmica) – 2019.S1


Flavio Souza - flavio.souza2@docente.unip.br

Obs: A lista de exercícios é individual e deve ser entregue MANUSCRITAMENTE no dia da prova de
Ciências da Computação Integrada (lista entregue a posteriori a data e/ou impressa não serão aceitas).

1. Mostre o aspecto de uma árvore que armazena números inteiros após a inserção dos números 30, 20, 10,
40, 15, 35 e 32, nesta ordem.

2. Mostre o aspecto da árvore 2-3 anterior após a remoção dos números 10,15 e 32, nesta ordem.

Remoção nº 10

Remoção nº 15
Remoção nº32

3. Dado um vetor de inteiros com as sete primeiras posições preenchidas, respectivamente com 33, 12,
45,18, 69, 2 e 20, mostre como a ordem dos elementos varia a cada passo da execução do:
a. Bubble sort
b. Quick sort
c. Heap sort

4. Imagine que você precisa ordenar um vetor com milhares de números e você tem a alternativa de usar
funções que implementam o bubble sort, o quick sor e o heap sort.
Qual seria o algoritmo adequado a ser utilizado se desejo uma boa eficiência e quero manter o tempo de
ordenação o mais constante possível, independente da ordem inicial? Por quê?

5. Explique porque o quick sort é mais eficiente quando os elementos a ordenar estão embaralhados e menos
eficiente quando eles já estão praticamente em ordem.

6. Faça uma rotina que lê um arquivo texto contendo um caderno de telefones com 3 linhas em seqüência
para cada pessoa
a. o apelido (máx. 10 caracteres minúsculos);
b. o nome (máx. 40 caracteres); e
c. o telefone (máx. 30 caracteres)
e guarda em memória principal todas as informações.

7. Faça uma rotina que ordene as informações do exemplo anterior por apelido e as grave em um arquivo
binário.

8. Explique os mecanismos de tratamento de colisão em tabelas "hash".


9. Dada a sequencia de números: 3 4 9 2 5 8 2 1 7 4 6 2 9 8 5 1, ordene-a em ordem não decrescente
segundo os seguintes algoritmos, apresentando a sequencia obtida após cada passo do algoritmo:
a. MergeSort
b. QuickSort
c. HeapSort

10. Faça um teste de mesa com cada metodo de ordenação estudado, utilizando as seguintes sequências de
dados de entrada:
a. 2, 4, 6, 8, 10, 12
b. 11, 9, 7, 5, 3, 1
c. 5, 7, 2, 8, 1, 6
d. 2, 4, 6, 8, 10, 12, 11, 9, 7, 5, 3, 1
e. 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11
f. 8, 9, 7, 9, 3, 2, 3, 8, 4, 6
g. 89, 79, 32, 38, 46, 26, 43, 38, 32, 79
Em cada caso, mostre o numero de comparações e trocas que realizam na ordenação de sequencias.

11. Crie um programa que dado uma string, coloque as letras dela em ordem crescente pelo algoritmo bubble
sort

12. Façaa um programa que leia n nomes e ordene-os pelo tamanho utilizando o algoritmo selection sort

13. Crie um programa que dado uma string, coloque as letras dela em ordem decrescente usando o algoritmo
quick sort.

14. O que significa dizer que uma função g(n) é O(f(n))?

15. O que significa dizer que uma função g(n) é Θ(f(n))?

16. O que significa dizer que uma função g(n) é Ω(f(n))?

17. Para o calculo da complexidade de algoritmos não recursivos, existe um conjunto de regras bastante
simples de serem seguidas. Cite e descreva estas regras.

18. Explique que tipos de problemas ou algoritmos costumam ter complexidade da ordem de n log n e como
os identificamos.

19. Calcule a complexidade, no pior caso, do fragmento de codigo abaixo

20. Calcule a complexidade, no pior caso, do fragmento de codigo abaixo:


21. Calcule a complexidade, no pior caso, do fragmento de codigo abaixo:

22. Obtenha a equação matemática referente á análise do pior e melhor caso do fragmento de código abaixo:

23. Obtenha a equação matemática referente á análise do pior e melhor caso do fragmento de codigo abaixo:

Você também pode gostar