Professional Documents
Culture Documents
1
Bubble sort Bubble sort
• Princípio de funcionamento • Exemplo
– São feitas várias passagens na tabela; 25 48 37 12 57 86 33 22
– Quando dois elementos adjacentes estão fora de
ordem, é feita a inversão e esses dois elementos são 25 48 37 12 57 86 33 22 (25x48)
trocados de posição; 25 48 37 12 57 86 33 22 (48x37) troca
• Primeiro elemento é comparado com o segundo, o segundo 25 37 48 12 57 86 33 22 (48x12) troca
com o terceiro… invertento quando necessário. 25 37 12 48 57 86 33 22 (48x57)
– Fim da comparação: quando o penúltimo é 25 37 12 48 57 86 33 22 (57x86)
comparado com o último; 25 37 12 48 57 86 33 22 (86x33) troca
• Ao final, o maior elemento ficará posicionado na última 25 37 12 48 57 33 86 22 (86x22) troca
posição. 25 37 12 48 57 33 22 86
– O processo continua até o que todo o vetor esteja Final do 1º “ciclo”: o maior elemento (86) está na posição final
ordenado. 7 8
11 12
2
Quick Sort Quick Sort
• Princípio de funcionamento (cont.) • Princípio de funcionamento (cont.)
– Identificar a posição correta do pivô – Continua a busca
• Comparar os elementos v[1],v[2],… até encontrar um • Para cima a partir de v[a+1] e para baixo a partir de v[b-1]
elemento v[ a ] > pivo • O processo termina quando b cruzar com a ( b<a)
25 48 37 12 57 86 33 92 25 12 37 48 57 86 33 92
a a=1 a b a=b=2
• A partir do final do vetor, compara os elementos v[tam-1], 25 12 37 48 57 86 33 92
v[tam-2],… até encontrar um elemento v[b] <= pivo
a b a=2, b = 1 (b<a)
25 48 37 12 57 86 33 92
• Agora a posição do pivô já está definida: trocar
a b a=1, b=3 v[0] por v[b]
• Neste ponto, troca-se v[a] com v[b] 12 25 37 48 57 86 33 92
25 12 37 48 57 86 33 92 13 14
3
Exercício
• Modifique o programa criado no exercício
anterior, substituindo o algoritmo de
ordenação Bubble Sort pelo algoritmo Ordenação por seleção
Quick Sort.
• Verifique se há mudança significativa no
tempo gasto para ordenação.
19
4
Ordenação por Árvore Binária Ordenação por Árvore Binária
• Constrói-se uma árvore binária de busca • Vantagens
usando os elementos da tabela. – Quando a árvore já existe.
• Faz-se um caminhamento em in-ordem • Desvantagens
copiando os elementos de volta na tabela – Requer código demais na implementação
original na ordem em que estes são – Uso de memória adicional
encontrados. • Indicações
– Tabelas não muito grandes
25 26
Exercício
• Inclua o método de Ordenação por Árvore
Binária e verifique seu desempenho em
relação aos demais métodos. Ordenação por inserção
27
5
Inserção simples Inserção simples
void insertionSort( int vetor[], int num){
• Vantagens:
int i,j,key;
– Simplicidade
• Desvantagens: for (j=1; j < num; j++){
key = vetor[j];
– Lentidão i = j - 1;
while (( i >= 0 ) && ( vetor[i] > key )){
• Indicações: vetor[i+1] = vetor[i];
i--;
– Tabelas pequenas e quase ordenadas }
vetor[i+1] = key;
}
}
31 32
33 34
6
Exercício
• Inclua o método Shellsort e verifique seu
desempenho em relação aos demais
métodos. Ordenação por intercalação
37
39 40
41 42
7
Exercício
• Inclua o método Mergesort e verifique seu
desempenho em relação aos demais
métodos.
43