Вы находитесь на странице: 1из 2

Lista IV Introdução à Computação II, 5954006

Lista de Exercícios IV – Ordenação

1. Com base na análise dos algoritmos de ordenação vistos em aula, qual o que apresenta
melhor desempenho no geral (tanto em número de comparações como movimentos)?
Assumindo que o vetor já esteja inversamente ordenado (ordem totalmente inversa à função
de ordenação), qual método é melhor?

2. Os algoritmos de ordenação vistos em aula ordenam vetores em ordem crescente dos


elementos chaves. Quais as alterações necessárias em cada algoritmo para que os elementos
sejam colocados em ordem decrescente?

3. Considerando os algoritmos de ordenação vistos em aula, quais são estáveis e quais não
são? Para cada algoritmo instável, forneça um exemplo de vetor que não preserva a ordem
dos elementos com chaves iguais quando ordenado pelo algoritmo em questão.

4. O programa de ordenação por inserção binária continuaria funcionando corretamente se a


condição “L < R” fosse substituída por “L ≤ R” no comando enquanto? Estaria ainda
correto se o comando “L = m+1” fosse simplificado para “L = m”? Se não, forneça como
contra-exemplo um vetor para os quais o programa alterado não funcionará corretamente.

5. Ainda considerando o algoritmo de inserção binária, o que aconteceria se a condição


“a[m] ≤ x” fosse substituída por “a[m] < x”?

6. Suponha que você está trabalhando no departamento de censo demográfico de uma pequena
cidade A, na qual a quantidade de registros, aproximadamente 5000, é suficientemente
pequena para caber na memória principal de um computador. Todas as pessoas atualmente
morando em A nasceram no Brasil. Existe um registro para cada pessoa contendo nome da
pessoa, município de nascimento e estado onde a pessoa nasceu. Gere um programa para
produzir uma lista de pessoas que moram em A ordenadas por estado. Dentro de cada
estado, as pessoas devem ser listadas por municípios e esses organizados em ordem
alfabética. Justifique todas as suposições que fizer.

7. Ordene, sem o auxílio do computador, os seguintes vetores utilizando cada um dos


algoritmos de ordenação vistos em aula. Para cada algoritmo de ordenação, utilize uma
tabela contendo os valores do vetor bem como as variáveis utilizadas pelo algoritmo em
uma dimensão (por exemplo, coluna), e cada passo do algoritmo em outra dimensão (por
exemplo, linha). Apresente o número de comparações entre chaves e movimentações de
registros em cada passo, bem como os valores totais. Os valores 43A e 43B são equivalentes
e foram rotulados com subscritos para que seja possível comparar a ordem relativa deles ao
final do processo de ordenação.
i) 08 12 19 43A 43B 56 67 95
ii) 67 12 43A 95 43B 56 08 19
iii) 95 12 43A 43B 19 56 67 08
iv) 95 67 56 43A 43B 19 12 08

1
Lista IV Introdução à Computação II, 5954006

8. Encontre uma permutação das chaves 1, 2, ..., N para a qual o algoritmo Quicksort apresente
seu pior (melhor) desempenho, para valores de N = 5 e 6.

9. Um vetor que está em seqüência ordenada é um heap mínimo?

10. O vetor 23, 17, 14, 6, 13, 10, 1, 5, 7, 12 é um heap máximo?

11. Ilustre a seqüência de alterações (árvores) resultantes da execução de heapify(3,14) sobre o


vetor 27, 17, 3, 16, 13, 10, 1, 5, 7, 12, 4, 8, 9, 0.

12. Os bancos normalmente registram transações em uma conta na ordem dos horários das
transações, mas muitas pessoas gostam de receber seus extratos bancários com cheques
relacionados na ordem de número de cheque. Em geral, as pessoas preenchem seus cheques
na ordem do número do cheque, e os comerciantes normalmente os descontam com uma
presteza razoável. Portanto, o problema de converter a ordenação pela hora de transação na
ordenação pelo número do cheque é o problema de ordenar uma entrada quase ordenada.
Comente a seguinte afirmação “O algoritmo de inserção direta tende a superar o
procedimento Quicksort nesse problema”.

Вам также может понравиться