Escolar Documentos
Profissional Documentos
Cultura Documentos
Critrio de Ordenao
Ordena-se de acordo com uma chave:
typedef int TChave; typedef struct { TChave Chave; /* outros componentes */ } TItem;
Caractersticas
Estabilidade: relativo manuteno da ordem original de itens de chaves iguais Ordenao interna: dados a serem ordenados cabem todos na memria principal. Princpio: comparao x distribuio
Critrio de Avaliao
Sendo n o nmero de registros no arquivo, as medidas de complexidade relevantes so: Nmero de comparaes C(n) entre chaves. Nmero de movimentaes M(n) de itens
Outras Consideraes
O uso econmico da memria disponvel um requisito primordial na ordenao interna. Mtodos de ordenao in situ so os preferidos.
Mtodos in situ no utilizam memria adicional.
Mtodos que utilizam listas encadeadas no so muito utilizados. Mtodos que fazem cpias dos itens a serem ordenados possuem menor importncia.
Mtodos
Mtodos a que estudaremos hoje: Bolha (BubbleSort) Seleo (SelectSort) Insero (InsertSort)
BUBBLESORT
ORDENAO DA BOLHA
Mtodo Bolha
Os elementos vo borbulhando a cada iterao do mtodo at a posio correta para ordenao da lista O mtodo poderia parar quando nenhum elemento borbulhace/trocasse de posio Como os elementos so trocados (borbulhados) frequentemente, h um alto custo de troca de elementos
Mtodo Bolha
void Bolha (TItem* v, int n) { int i, j; TItem aux; for (i = 0; i < n-1; i++) { for (j = 1; j < n-i; j++) { if (v[j].Chave < v[j-1].Chave) { aux = v[j]; v[j] = v[j-1]; v[j-1] = aux; } } } }
Anlise de Complexidade
Comparaes C(n)
C ( n) =
(n i 1) = n i 1
i =0 i =0 i =0 i =0
n2
n2
n2
n2
Desvantagens:
O fato de o arquivo j estar ordenado no ajuda reduzir o nmero de comparaes (o custo continua quadrtico), porm o nmero de movimentao cai a zero.
11
Mtodo Bolha
void Bolha (TItem* v, int n) { int i, j; TItem aux; for (i = 0; i < n-1; i++) { for (j = 1; j < n-i; j++) { if (v[j].Chave < v[j-1].Chave) { aux = v[j]; v[j] = v[j-1]; v[j-1] = aux; } } } }
12
13
SELECTSORT
Mtodo Seleo
Seleo do n-simo menor (ou maior) elemento da lista Troca do n-simo menor (ou maior) elemento com a nsima posio da lista Uma nica troca por vez realizada
15
Mtodo Seleo
void Selecao (TItem* v, int n) { int i, j, Min; TItem aux; for (i = 0; i < n - 1; i++) { Min = i; for (j = i + 1 ; j < n; j++) if (v[j].Chave < v[Min].Chave) Min = j; aux = v[Min]; v[Min] = v[i]; v[i] = aux; } }
16
Anlise de Complexidade
Comparaes C(n)
C ( n) =
(n i 1) = n i 1
i =0 i =0 i =0 i =0
n2
n2
n2
n2
Movimentaes M(n)
Desvantagens:
O fato de o arquivo j estar ordenado no ajuda em nada, pois o custo continua quadrtico. O algoritmo no estvel.
18
Mtodo Seleo
void Selecao (TItem* v, int n) { int i, j, Min; TItem aux; for (i = 0; i < n - 1; i++) { Min = i; for (j = i + 1 ; j < n; j++) if (v[j].Chave < v[Min].Chave) Min = j; aux = v[Min]; v[Min] = v[i]; v[i] = aux; } }
19
INSERTSORT
Mtodo Insero
Algoritmo utilizado pelo jogador de cartas
As cartas so ordenadas da esquerda para direita uma por uma. O jogador escolhe a segunda carta e verifica se ela deve ficar antes ou na posio que est. Depois a terceira carta classificada, deslocando-a at sua correta posio O jogador realiza esse procedimento at ordenar todas as cartas
Alto custo em remover uma carta de uma posio e coloc-la em outra quando a representao por arranjos
22
Mtodo Insero
void Insercao (TItem* v, int n) { int i,j; TItem aux; for (i = 1; i < n; i++) { aux = v[i]; j = i - 1; while (j >= 0 && aux.Chave < v[j].Chave) { v[j + 1] = v[j]; j--; } v[j + 1] = aux; } }
23
24
Anlise de Complexidade
Comparaes C(n)
No anel mais interno, na i-sima iterao, o valor de Ci :
melhor caso : Ci (n) = 1 pior caso caso medio : Ci (n) = i : Ci(n) = 1/i (1 + 2 + ... + i) = (i+1)/2
Anlise de Complexidade
Movimentaes M(n)
No anel mais interno, na i-sima iterao, o valor de Mi :
melhor caso : Mi (n) = 0 pior caso caso medio : Mi (n) = i : Mi(n) = 1/i (0 + 1 + 2 + ... + i-1) = (i-1)/2
28
29
Perguntas?
EXERCCIO
Exerccio
Dada a sequncia de nmeros:
3492518
Ordene em ordem crescente utilizando os trs algoritmos aprendidos em sala (BubbleSort, SelectSort e InsertSort), apresentado a sequncia dos nmeros a cada passo.
32