Escolar Documentos
Profissional Documentos
Cultura Documentos
Ordenao Externa
Ordenao: re-arranjar um conjunto de registros em ordem ascendente ou descendente Os algoritmos sempre trabalham sobre os registros de um arquivo, sendo que apenas parte deste registro (a chave) usada na ordenao Ordenao externa ou ordenao de arquivos:
O nmero de registros a serem ordenados usa mais memria interna do que a disponvel no computador
A operao de fuso muito mais simples que a de ordenao e empregada como uma operao auxiliar no processo mais complexo de ordenao externa
Vantagens:
1. Pior caso: O(n log n) 2. Exige apenas acesso seqencial aos dados 3. Trabalha bem com dados em lista encadeada
Desvantagens:
1. Exige espao extra: O(n)
Primeira Parte
Na 1a. Parte, o arquivo lido de 3 em 3 registros
Cada bloco de 3 registros ordenado e escrito em uma das fitas de sada 1. Para o exemplo so lidos os registros A S O e escrito o bloco A O S na fita 1 2. Em seguida, so lidos os registros R T I e escrito o bloco I R T na fita 2, e assim sucessivamente... 3 fitas so usadas em uma fuso de 3 caminhos...
Assim, a repetio dos passos 1 e 2 produz: fita 1: fita 2: fita 3: AOS I RT AGN DMN EGR GIN AEX LMP E
Segunda Parte
Na 2a. Parte, os blocos devem ser fusionados
1. O 1o. registro de cada uma das trs fitas lido para a memria interna, ocupando-a totalmente 2. O registro contendo a menor chave retirado e o prximo registro da mesma fita lido para a memria interna 3. O processo repetido at a leitura de todos os registros
Segunda Parte
Quando o terceiro registro de uma fita lido, aquela fita fica inativa at que todas as outras fitas sejam lidas e escritas na fita de sada, formando um bloco com 9 registros ordenados Em seguida, o 2o. bloco de 3 registros de cada fita lido para formar outro bloco ordenado de 9 registros, que escrito em outra fita Por fim, 3 novos blocos ordenados so obtidos:
Aps mais uma fuso das fitas 4, 5 e 6 para as fitas 1, 2 e 3 finaliza a ordenao
MergeSort Externo
Executa em 2 etapas Etapa 1 Sort
Quebra-se o conjunto em parties tamanho da partio depende da disponibilidade de buffers em memria (nbuf = no de buffers disponveis) gera um arquivo temporrio ordenado para cada partio
Algoritmo do Mergesort
Mergesort(A,Esq,Dir); if Esq < Dir then m:= |(Esq+Dir) div 2| Mergesort(A,Esq,m); Mergesort(A,m+1,Dir); Merge(A,Esq,m+1,Dir);
Nbuf =
procedure Mergesort(var A:vetor; Esq,Dir: integer); var i, j, k, m: integer; begin if Esq < Dir then begin m:= (Esq+Dir) div 2; Mergesort(A,Esq,m); Mergesort(A,m+1,Dir); for i:=m donwto Esq do A[i]:=B[j]; for j:=m+1 to Dir do B[Dir+m+1-j]:=A[j]; for k:=Esq to Dir do begin if B[i] < B[j] then begin A[k]:=B[i]; i:=i+1; end else begin A[k]:=B[j]; j:=j-1; end end;
O O
R R
D D E O
E R A N A A A O N R R R R
Outros mtodos
Captulo 2 do Wirth traz todos os mtodos, com anlises aprofundadas. Captulo 4 de Ziviani traz alguns mtodos com boas explicaes
Referncias do Curso
Transparncias disponibilizadas pelo Prof. Ziviani, a partir do Livro Projeto de Algoritmos com Implementao em Pascal e C, M. A. da Silva Bigonha e Nvio Ziviani, Campus Algoritmos e Estruturas de Dados, N. Wirth, Prentice-Hall