Академический Документы
Профессиональный Документы
Культура Документы
Slvio)
pag. 1
Aula 08 - Contedo
1)
2)
3)
4)
Algoritmos de Ordenao
Algoritmos de Busca
Implementaes destes algoritmos
Exerccios
Introduo
Estudaremos, neste tpico, os seguintes mtodos de classificao:
a) Classificao por troca
Buble Sort (mtodo bolha)
Quick Sort
b) Classificao por seleo
Selection Sort (mtodo da seleo)
c) Classificao por insero
Insertion Sort (mtodo da insero)
Shell Sort
d) Classificao por intercalao
Merge Array
Merge Sort
e) Classificao de Razes
Radix Sort
Para efeitos de explicao utilizaremos tanto nos mtodos de busca quanto nos
mtodos de ordenao, nos casos que assim permitirem, um vetor x de inteiros de
tamanho n, sendo que os ndices do vetor x assumiram valores entre 0 e n-1.
Obs.: apesar dos algoritmos implementados utilizarem um vetor, podemos
estender a lgica das classificaes tambm para arquivos.
Algoritmos de Ordenao
Classificao por Troca
Buble Sort (Mtodo Bolha arquivo Ex801.cpp)
A idia bsica do Buble Sort percorrer os dados do vetor (arquivo)
sequencialmente vrias vezes. Em cada passagem pelos dados devemos comparar
cada elemento com o seu sucessor (x[k] com x[k+1]). Se os elementos no estiverem
ordenados devemos troc-los de posio.
Exemplo:
Iterao 0: 25 57 48 37 12 92 86 33
Iterao 1: 25 48 37 12 57 86 33 92
Iterao 2: 25 37 12 48 57 33 86 92
Iterao 3: 25 12 37 48 33 57 86 92
Iterao 4: 12 25 37 33 48 57 86 92
Iterao 5: 12 25 33 37 48 57 86 92
Iterao 6: 12 25 33 37 48 57 86 92
Iterao 7: 12 25 33 37 48 57 86 92
pag. 2
pag. 3
25
25
25
25
25
25
25
12
57
57
57
33
33
33
12
25
48
48
48
48
12
12
33
33
37
37
37
37
37
37
37
37
12
12
12
12
48
48
48
48
92
33
33
57
57
57
57
57
86
86
86
86
86
86
86
86
33
92
92
92
92
92
92
92
pag. 4
maior = x[0];
indx = 0;
for(j=1; j <= i; j++)
{
if ( x[j] > maior )
{
maior = x[j];
indx = j;
}
}
x[indx] = x[i];
x[i] = maior;
}
}
25
25
25
25
12
12
12
12
57
57
48
37
25
25
25
25
48
37
12
92
86
33
57
48
37
37
37
33
57
48
48
48
37
57
57
57
48
92
86
57
92
86
92
x[i+1] = x[i];
pag. 5
pag. 6
25
25
25
12
57
57
37
25
48
37
48
33
37
48
57
37
12
12
12
48
92
92
33
57
86
33
86
86
33
86
92
92
pag. 7
Classificao de Razes
Radix Sort (arquivo Ex808.cpp)
Este mtodo de classificao baseia-se nas representaes posicionais dos
valores dos dgitos dos nmeros a serem classificados.
Exemplo:
Vetor original x = (25 57 48 37 12 92 86 33)
Filas baseadas no dgito menos significativo
Incio
Final
Fila [0]
Fila [1]
Fila [2]
12
...
92
Fila [3]
33
Fila [4]
Fila [5]
25
Fila [6]
86
Fila [7]
57
...
37
Fila [8]
48
Fila [9]
Aps a primeira passagem temos:
Vetor x = (12 92 33 25 86 57 37 48)
pag. 8
pag. 9
Algoritmos de Busca
Sequential Search (Busca Seqencial arquivo Ex809.cpp)
Devemos percorrer o vetor x sequencialmente at encontrar o elemento desejado
ou o seu final.
Algoritmo Sequential Search
int SeqSearch(int x[], int n, int chave)
{
int k;
for(k=0; k < n; k++)
if ( x[k] == chave ) return(k);
return(-1);
}