Professional Documents
Culture Documents
Ordenao de Dados
+ Conceitos Bsicos + Ordenao por Insero + Ordenao por Trocas + Ordenao por Seleo + Ordenao por Distribuio de Chaves + Ordenao por Intercalao + Ordenao por Clculo de Endereos + Comparao entre os Mtodos
ORDENAO DE DADOS
Conceitos Bsicos
+ Importncia da ordenao ou classificao
Livros numa biblioteca Agenda e catlogos telefnicos Dicionrios Arquivos com cadastro de funcionrios
ORDENAO DE DADOS
Conceitos Bsicos
+ Definio (Dic. Aurlio)
+ +
Pr em ordem; arrumar,
Organizao dos elementos de um conjunto de acordo com uma relao de ordem com a qual se atribui, em geral, a todo elemento, um antecedente e um sucessor.
ORDENAO DE DADOS
Conceitos Bsicos
+ Princpios da Ordenao Considerando 3 elementos: a, b, c e < (< significando precedncia) 1) Princpio da triconomia a < b, a=b, b < a 2) Princpio da transitividade Se a < b e b < c ento a < c
ORDENAO DE DADOS
Conceitos Bsicos
+ Estrutura de Dados Arquivo ou tabela com uma sequncia de n registros R1, R 2, , R n.
+ + Cada + + +
registro contm uma certa quantidade de informaes divididas em campos. Um destes campos, ou a combinao de dois ou mais, conhecido como chave. O valor da chave usado para a classificao dos registros. Os demais campos no tm influncia alguma nos algoritmos de classificao.
ORDENAO DE DADOS
Conceitos Bsicos
+ Formas de Rearranjar os registros de um
arquivos:
+
Contigidade Fsica :
+
Antes
Depois
ORDENAO DE DADOS
Conceitos Bsicos
+ Formas de Rearranjar os registros de um
arquivos:
+
dados.
Chave
1 2 3 4 5
10 19 13 12 07
VIO 5 1 2 4 3
1 4 5
3 2
ORDENAO DE DADOS
Conceitos Bsicos
+ Formas de Rearranjar os registros de um
arquivos:
+
Encadeamento :
+ entradas so mantidas nas posies originais; + formada uma lista encadeada para indicar a
ordenao; + custo baixo, mas necessita de mais um campo para indicar encadeamento; + deve existir um ponteiro para o primeiro elemento.
ORDENAO DE DADOS
Conceitos Bsicos
10 2 19 3 13
1
12 5 07
4
Antes
1 2 3 4 5
10 19 13 12 07
4 2 3 1
Depois
ORDENAO DE DADOS
Conceitos Bsicos
+ Algoritmos de Ordenao
+
Ordenao interna:
+ A classificao feita na estrutura como um todo,
geralmente num conjunto pequeno de dados. + O processo realizado internamente (ou quase) na memria principal.
+
Ordenao externa:
+ A classificao feita sobre parte de uma grande
estrutura. + impossvel colocar toda a estrutura na memria principal. + H necessidade de contar com auxlio de memrias de armazenamento de massa.
ORDENAO DE DADOS
Conceitos Bsicos
+ Algoritmos de Ordenao: Ordenao Interna Ordenao por Insero: os algoritmos baseiam-se no deslocamento de elementos da estrutura frente a um elemento de busca.
+ + Insero direta + Incrementos decrescentes (shell sort)
Ordenao por Troca: os algoritmos baseiam-se na troca de posio dos dados.Realiza a classificao por sucessivas comparaes dos elementos e, caso no estejam na posio correta, faz-se a troca da posio.
+ + Mtodo da Bolha (buble sort) + Mtodo da Agitao (shake sort) + Mtodo da troca e partio (quicksort)
ORDENAO DE DADOS
Conceitos Bsicos
+ Algoritmos de Ordenao: Ordenao Interna Ordenao por Seleo: a ordenao por seleo parte do princpio de realizar o isolamento de elementos para posies ordenadas.
+ + Seleo direta + Seleo em rvore (heapsort )
ORDENAO DE DADOS
Conceitos Bsicos
+ Algoritmos de Ordenao: Ordenao Interna Ordenao por Distribuio de Chaves: O algoritmo de distribuio de chaves funciona como um ndice de elementos, sendo um bom classificador. + Ordenao por Intercalao: A ordenao por intercalao parte da idia de particionar em blocos a estrutura para melhor realizar a classificao.
+
Ordenao por clculo de endereo: a ordenao feita atravs de funes de distribuio, possibilitando que um simples clculo de endereo determine o posicionamento de um dado.
+
ORDENAO DE DADOS
Ordenao por Insero
+ Insero Direta
+
Princpio
+ consiste em, dado um vetor para ordenao,
percorrer elemento por elemento deslocando-o e inserindo-o na posio ordenada. A idia formar um bloco de valores ordenados e outro de desordenados, e ir passando os valores de um bloco a outro.
+ usado para conjunto pequeno de dados. + tem baixa eficincia em relao ao tempo total para
realizar uma classificao. medida que o conjunto de dado a ser classificado aumenta, diminui o tempo de classificao do conjunto como um todo.
ORDENAO DE DADOS
Ordenao por Insero Direta
+ Exemplo
Vetor Original Diviso inicial Bloco dos ... 1a iterao 2a iterao 3a iterao 4a iterao 5a iterao 6a iterao (vetor ordenado) 18 18 15 15 7 7 9 9 23 23 16 16 14 14
ordenados
desordenado
15 7 7 7 7 7
18 15 9 9 9 9
7 18 15 15 15 14
9 9 18 18 16 15
23 23 23 23 18 16
16 16 16 16 23 18
14 14 14 14 14 23
ORDENAO DE DADOS
Ordenao por Insero Direta
+ Algoritmo
+ O primeiro elemento do vetor considerado ordenado e
os seguintes desordenados;
+ Busca-se os elementos do bloco dos desordenados e
ORDENAO DE DADOS
Ordenao por Insero Direta
+ Algoritmo (pseudocdigo)
Constante TAMANHO = 10 Varivies vetor [1..TAMANHO]: inteiro i, j, k, trab : inteiro achou: lgico Incio Para i 1 at TAMANHO faa leia vetor [ i ] Fim-para Para i 2 at TAMANHO faa j1 achou F Enquanto ((j < i) e (no achou) faa Se vetor[ I ] < vetor [ j ] ento achou V seno jj+1 fim-se Fim-enquanto
ORDENAO DE DADOS
Ordenao por Insero Direta
+ Algoritmo (pseudocdigo)
Se achou = Vento trab vetor [ i ] ki-1 Enquanto k >= j faa vetor[ k+1 ] vetor [ k ] kk-1 Fim-enquanto vetor [ j ] trab Fim-se Fim-Para Fim
ORDENAO DE DADOS
Ordenao por Insero Direta
Constante TAMANHO = 10 Varivies vetor [1..TAMANHO]: inteiro I, j, k,chave : inteiro achou: lgico Incio Para i 1 at TAMANHO faa leia vetor [ i ] Fim-para Para i 2 at TAMANHO faa chave vetor [ j ] jj-1 achou F enquanto (( i > 0 ) e (vetor [ i ] > chave )) faa vetor[ I + 1 ] vetor [i] ii+1 fim-enquanto vetor [ i + 1 ] chave Fim-Para Fim
ORDENAO DE DADOS
Ordenao por Insero Direta
+ Anlise de Desempenho do Algoritmo
+ fortemente influenciado pela ordem inicial das chaves
a serem ordenadas. Se a chave a ser inserida for menor que as que esto no bloco de ordenadas, elas devem ser transpostas uma posio direita para dar lugar quela que vai ser inserida.
+ Situao mais desfavorvel quando o o bloco a ser
ordenado se apresenta na ordem contrria ordem desejada pois acarreta deslocamento de todos os dados direita.
10
ORDENAO DE DADOS
Ordenao por Insero Direta
+ Anlise de Desempenho do Algoritmo
+ Consideraes:
+ a distncia mdia das chaves fora do local n/2
n - 1. Mesmo que o vetor esteja na ordem inversa, pelo menos uma chave estar na posio correta.
ORDENAO DE DADOS
Ordenao por Insero Direta
+ Anlise de Desempenho do Algoritmo
A 0 1 2 3 ... k=n-1 B 0 n/2 2 x n/2 3 x n/2 ... k x n/2 C n-1 n-2 n-3 n-4 ... n-(K+1)
A quantidade de chaves fora do local B nmero de comparaes para descobrir o local correto de cada chave fora de seu lugar C nmero de comparaes para descobrir que as demais chaves esto no seu local correto
11
ORDENAO DE DADOS
Ordenao por Insero Direta
+ Anlise de Desempenho do Algoritmo
+ Concluses:
+ o total de comparaes a serem efetuadas a soma das
colunas B e C, isto , (k x n/2) + (n - (k+1)). + No melhor caso (k = 0), tem-se n -1 comparaes. + No pior caso (k = n -1), tem-se (n2 - n) / 2 comparaes.
+ a mdia de comparaes a mdia aritmtica entre o
ORDENAO DE DADOS
Ordenao por Insero
+ Incrementos Decrescentes (shell sort)
+ +
uma extenso do algoritmo de insero direta com a diferena de que o vetor usado no processo de classificao dividido em vrios segmentos (blocos). O vetor dividido em i segmentos, de tal forma que cada segmento possua n/i chaves que classificado separadamente.
+
12
ORDENAO DE DADOS
Ordenao por Insero: Mtodo Shell Sort
+ Descrio
+ Considerando
o vetor V[1..n], o mesmo dividido em i segmentos onde i um incremento: segmento 1: V[1], V[i+1], v[2i+1], v[3i+1], ... segmento 2: V[2], V[i+2], v[2i+2], v[3i+2], ... segmento 3: V[3], V[i+3], v[2i+3], v[3i+3], ... ... Segmento i: V[i], V[i+i], v[2i+i], v[3i+i], ...
ORDENAO DE DADOS
Ordenao por Insero: Mtodo Shell Sort + Descrio
+ +
O valor do incremento inicial dado por 2NP(i= 2 NP), onde NP o nmero de passos para ordenar o vetor (NP fornecido pelo usurio e uma aproximao inicial). Exemplo: Se NP=3, o valor do incremento i em cada passo seria: i = 23 = 8
i = 22 = 4 i = 21 = 2 i = 20 = 1
A cada passo, o valor de i diminudo pela metade do valor anterior dando origem a novos segmentos (a metade do nmero anterior).
+
13
ORDENAO DE DADOS
Ordenao por Insero: Mtodo Shell Sort + Descrio
aplicado mtodo da ordenao por insero direta em cada passo e em cada segmento originado.
+
O processo repetido at que i = 1. Quando aplicada a ordenao com i =1, o vetor estar classificado.
+ + Vantagem:
o mtodo shell faz classificaes parciais do vetor, aumentando o desempenho nos passos seguintes, j que a insero direta acelerada quando o vetor estiver parcialmente ordenado.
ORDENAO DE DADOS
Ordenao por Insero: Mtodo Shell Sort
NP = 2 Vetor original (desordenado)
1 2 3 4 5 6 7 8 9 10 11 12 17 29 42 15 21 22 47 37 52 43 27 12
1 SO S PA
I = 2NP = 22 = 4
Segmento 1
1 5 9
Segmento 2
2 6 10
Segmento 3
3 7 11
Segmento 4
4 8 12
17 21 52
29 22 43
42 47 27
15 37 12
Obtm-se o vetor
11 12 47 37
14
ORDENAO DE DADOS
Ordenao por Insero: Mtodo Shell Sort
Vetor originado no PASSO 1
1 17 2 22 3 27 4 12 5 21 6 29 7 42 8 15 9 10 52 43 11 12 47 37
2 SO S PA
I = 2NP-1 = 22-1 = 21 = 2
Segmento 1
1 3 5 7 9 11 2 4
Segmento 2
6 8 10 12
17 27 21
42 52 47
22 12 29
15 43 37
Obtm-se o vetor
1 17 2 12 3 4 21 15 5 6 27 22 7 42 8 29 9 47 10 37 11 12 52 43
ORDENAO DE DADOS
Ordenao por Insero: Mtodo Shell Sort
L INA
Vetor originado no PASSO 2
1 17 2 12 3 4 21 15 5 6 27 22 7 42 8 29 9 47 10 37 11 12 52 43
PA
SO
I = 2NP-2 = 22-2 = 20 = 1 indica ltima classificao Aplicando-se a insero direta no vetor obtido no passo anterior, obtm-se o vetor:
1 12 2 15 3 4 17 21 5 6 22 27 7 29 8 37 9 42 10 43 11 12 47 52
15
ORDENAO DE DADOS
Ordenao por Insero: Mtodo Shell Sort + Algoritmo (pseudocdigo)
Constante TAMANHO = 12 Varivies vetor [1..TAMANHO]: inteiro i, j, NP, INC : inteiro Incio Para i 1 at TAMANHO faa leia vetor [ i ] Fim-para leia NP Para i NP at 0 passo -1 faa INC 2 ** i para j 1 at INC faa Mtodo_Shell (vetor, INC, j, TAMANHO) fim-para fim-para Fim
ORDENAO DE DADOS
Ordenao por Insero: Mtodo Shell Sort
Procedimento Mtodo_Shell (vetor, r, s, t) Incio Varivies i, j, k, trab : inteiro; achou: lgico Para i (s + r) at t passo r faa js achou F Enquanto (j < i) e (no achou) faa Se vetor [ i ] < vetor [ j ] ento achou V Seno jj+r Fim-se Fim-enquanto Se achou ento trab vetor [i ] ki+r Enquanto k > (j - r) faa vetor[ k + r ] vetor [ k ] kk-r Fim-enquanto vetor [ j ] trab Fim-se Fim-Para Fim Mtodo_Shell
16
ORDENAO DE DADOS
Ordenao por Insero: Mtodo Shell Sort + Anlise de Desempenho do Algoritmo
complexa. Alguns problemas matemticos relacionados no foram resolvidos, como por exemplo, determinar o efeito da ordenao de um passo produz nos passos subseqentes.
+
Ainda no se conhece exatamente a melhor seqncia de incrementos para produzir melhores resultados.
+
recomendvel que o valor inicial do incremento seja um valor que divida o vetor de chaves no maior nmero possvel de segmentos de mais de um elemento.
+
ORDENAO DE DADOS
Ordenao por Insero: Mtodo Shell Sort + Anlise de Desempenho do Algoritmo
O desempenho do mtodo quadrtico, isto , o desempenho esperado na classificao de cada um dos segmentos de (n/i)2. (n/i o nmero de chaves em i segmentos).
+
recomendvel que o valor inicial do incremento seja um valor que divida o vetor de chaves no maior nmero possvel de segmentos de mais de um elemento.
+
17
ORDENAO DE DADOS
Ordenao por Insero
+ Exerccios
1) Um vetor contm os elementos exibidos a seguir. Mostre o contedo do vetor depois de ter sido executada a primeira passagem do mtodo shell. O fator de incremento K=3.
24 4 8 14 90 8 67 27 45 19 91 99 58
2) No vetor apresentado a seguir, os dois primeiros elementos j foram classificados usando a ordenao por insero direta. Qual ser o valor dos outros elementos no vetor, depois de realizar mais 3 passagens do algoritmo de insero direta?
4 14 8 27 45 24 99 58
18