Você está na página 1de 2

Exerccios de Ordenao:

1. Faa uma coparao entre os algoritmos de ordenao vistos em sala de aula (Bubble-
Sort, Insertion-Sort, Merge-Sort e Quick-Sort), respondendo:

1.1. Quais destes algoritmos so estveis?
1.2. Para cada algoritmo, qual seria um melhor caso? Quantas comparaoes so feitas
(dizer se 0(n), O(n * log(n)) ou 0(n*n))? Justifique.
1.3. E no pior caso? Justifique
1.4. E com relao ao consumo de memria adicional gasto por cada algoritmo?
Quais gastam uma quantidade constante de memria extra, isto , quais so O(1)
neste quesito? E quais so 0(n)? Justifique.

Obs.: Um algoritmo de ordenao estvel se nmeros com o mesmo valor aparecem no
arranjo de sada na mesma ordem em que se encontram no arranjo de entrada.

2. Dada a sequencia de nmeros 12 5 2 7 4 13 7 11 12 1 8 4 , ordene-a em ordem no
crescente usando cada um dos 4 algoritmos de ordenao vistos em sala de aula,
apresentando a sequencia de comparaes e a sequencia de trocas realizadas (na
ordem correta).

3. Considere o problem de ordenar um vetor A de tamanho n onde cada elemento de A
um inteiro no intervalo de 1 a k. Considere o seguinte algoritmo, que ordena o vetor
A sem fazer qualquer comparao entre os elementos de A: crie um vetor count (cujo
tamanho deve ser igual ao elemento de maior valor em A) e defina count[i] como
sendo incicialmente o nmero de elementos em A iguais a i. Em seguida, redefina
count[i] como o nmero de elementos em A menores ou iguais a i (considere a
possibilidade do vetor A poder ter nmeros repetidos). Agora usando o vetor count e
o vetor A, coloque cada elemento A[i] em sua posio ordenada correta em um vetor
de sada B (um vetor de mesmo tamanho de A). No final do algoritmo, B conter os
elementos do vetor A ordenados.

3.1. Implemente o algoritmo acima.
3.2. Qual o pior caso deste algoritmo? Qual o melhor caso? Escreva a notao O para
o pior e melhor caso. Justifique suas respostas.
3.3. Como voce compararia este algoritmo com o Merge-Sort? E com o Quick-Sort?
Em quais casos este algoritmo teria melhor desempenho que esses outros dois?
Em quais casos voce descartaria este algortimo e ficaria com o Merge-Sort?
Justifique suas respostas.

4. Modifique a funo partition do Quick-Sort visto em aula para fazer a seguinte nova
partio: Partition(A, inf, sup), com o pivo sendo A[inf] (isto , a partio ser em
cima de A[inf]). Com dois ndices i e j, o seguinte invariante deve ser mantido: os
elementos de A[inf, ..., i] devem conter valores menores ou iguais a A[inf] e de A[j,
..., sup] valores maiores ou iguais a A[sup].

5. Implemente o seguinte algoritmo de ordenao: procure o menor elemento do vetor A
e o insira no incio do vetor (posio A[1]). Agora, procure o segundo menor
elemento e o insira na segunda posio A[2]. Em seguinda, o terceiro menor e o insira
na posio A[3] e assim sucessivamente.
5.1. Qual o melhor e o pior caso deste algoritmo? De a notao O para cada um
destes caso e a justifique precisamente.
5.2. Como voce compararia este algoritmo ao Bubble-Sort? E ao Merge-Sort?

Exerccios de rvores:

1. Faa um algoritmo recursivo para calcular a altura de uma rvore binria.

2. Faa um algoritmo recursivo para calcular a quantidade de folhas de uma rvore
binria.

3. Faa um algoritmo recursivo para calcular a quantidade de ns de uma rvore binria.

4. Faa um algoritmo recursivo para calcular a quantidade de ns de uma rvore binria
que tenha exatamente um filho.

5. Dada uma rvore binria que representa uma expresso completamente parentizada,
faa um algoritmo recursivo que calcule o valor (resultado) da expresso representado
por esta rvore.

6. Faa um algoritmo iterativo que receba uma expresso completamente parentizada
(vetor exp, de tamanho n) e crie a rvore de expresses correspondente. Dica: use uma
pilha.

7. Faa um algoritmo que receba uma rvore de expresses e crie a expresso
completamente parentizada.

8. Exrccios 3.18 a 3.20 do livro texto (Estrutura de Dados e Seus Algoritmos Jayme
Luiz Szwarcfiter e Lilian Markenzon)