Você está na página 1de 3

INSTITUTO SUPERIOR DE COMUNICAÇÃO E IMAGEM DE MOÇAMBIQUE

ALGORITMO E ESTRUTURA DE DADOS I

Curso: ISD2A, ISD2B Ficha de Exercícios de Algoritmos de Ordenação Nov-2022

120 min

Exercício 1: Dada a sequência 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 sequência obtida após cada
passo do algoritmo:

a) MergeSort
b) QuickSort
c) HeapSort,
d) Selection Sort
e) Bubble Sort
Exercício 2: Dado um conjunto de n inteiros distintos e um inteiro positivo k ≤ n: a. Proponha
um algoritmo que imprime os k menos elementos do conjunto (em qualuqer ordem) em tempo
O(n). b. Suponha agora que queremos imprimir os k menos em ordem crescente. É ainda possível
fazer isso em tempo O(n) para quaisquer valores k ≤ n?

Exercício 3: Reescreva a função BubbleSort apresentada em aula com sucessivas passagens em


direções opostas.

Exercício 4: Faça um teste de mesa com cada método de ordenação estudado até o momento,
utilizando as seguintes sequências de dados de entrada:

a) S1 = {2, 4, 6, 8, 10, 12}


b) S2 = {11, 9, 7, 5, 3, 1}
c) S3 = {5, 7, 2, 8, 1, 6}
d) S4 = {2, 4, 6, 8, 10, 12, 11, 9, 7, 5, 3, 1}
e) S5 = {2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11}
f) S6 = {8, 9, 7, 9, 3, 2, 3, 8, 4, 6}
g) S7 = {89, 79, 32, 38, 46, 26, 43, 38, 32, 79}
Em cada caso, mostre o número de comparações e trocas que realizam na ordenação
de sequências

Page 1 of 3
Exercício 5: Crie um algoritmo chamado quickfind baseado no quicksort para que, em vez de
ordenar uma sequência de números inteiros, ele nos retorne o k-ésimo menor elemento dessa
sequência. Por exemplo: Suponha que os elementos S = {7, 1, 3, 10, 17, 2, 21, 9} 2 estejam
armazenados nessa ordem em um vetor e que desejamos obter o quinto maior elemento dessa
sequência. Então, uma chamada como quickfind(S,0,7,5), deverá retornar o número 9, onde S é o
nome do vetor, 0 e 7 são, respectivamente, a menor e a maior posição do vetor e 5 indica que
desejamos o quinto menor elemento. Obs.: Você não deve ordenar a sequência e depois tomar o
k-ésimo elemento.

Exercício 6: Dada a sequência numérica (15,11,16,18,23,5,10,22,21,12) para ordenar pelo


algoritmo Selection Sort, qual é a sequência parcialmente ordenada depois de completada a
quinta passagem do algoritmo?

Exercício 7: A ordenação por transposição de par-ímpar ocorre da seguinte maneira. Percorra o


vetor várias vezes. Na primeira passagem compare x[i] com x[i+1] para todo i ímpar. Na segunda
passagem compare x[i] com x[i+1] para todo i par. Todav vez que x[i] > x[i+1] troque os dois.
Continue alternando dessa maneira até que o vetor esteja ordenado. a. Qual a condição para o
término da ordenação? b. Escreva uma função para implementar essa ordenação? c. Qual é o
custo médio dessa ordenação?

Exercício 8: O método de ordenação Bolha foi usado para ordenar uma tabela em ordem
crescente contendo os números [10, 8, 7, 0], serão feitas quantas comparações e trocas?
Exercício 9: Considere o seguinte vector v = <6, 3, 4, 2, 5, 1>. Indique o conteúdo de v no final
de cada passo dos algoritmos insertion sort e selection sort.
Exercício 10: Considere a aplicação do algoritmo bubblesort ao vector <20, 11, 16, 9, 12, 14, 17,
19, 13, 15>. Supondo que o algoritmo percorre o vector da esquerda para a direita em cada
iteração, qual o conteúdo do vector após as duas primeiras iterações do algoritmo bubblesort ?
Exercício 11: Diga quais dos seguintes vectores corresponde a um amontoado (heap)?
a. <50, 25, 30, 27, 24, 21, 28>
b. <50, 30, 25, 27, 24, 28, 21>
c. <60, 50, 9, 40, 41, 10, 8>
d. <40, 15, 18, 13, 11, 14, 16>
e. <60, 30, 80, 10, 35, 70, 40>
Exercício 12: A primeira operação do algoritmo heapsort é transformar o vector num
amontoado. Considere que o vector de entrada do algoritmo é <20, 11, 16, 9, 12, 14, 17, 19, 13,

Page 2 of 3
15>.
a) Indique o conteúdo do vector após o passo de transformação num amontoado.
b) Indique ainda o conteúdo do vector após os dois maiores elementos terem sido ordenados
(colocados na sua posição final), durante a operação de ordenação (heapsort).
Exercício 14: Qual o conteúdo do seguinte vector <25, 19, 23, 15, 18, 16, 21, 12> depois de os
dois primeiros elementos (i.e. os dois maiores) terem sido ordenados, utilizando o algoritmo de
ordenação heapsort?

Page 3 of 3

Você também pode gostar