47
ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701 JOSÉ MARIA DE OLIVEIRA Jr. N O : 9908803401 UNIVERSIDADE FEDERAL DO PARÁ CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE INFORMÁTICA DISCIPLINA: ESTRUTURAS DE DADOS II PROFESSOR: A B C SAMPAIO

ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

Embed Size (px)

DESCRIPTION

UNIVERSIDADE FEDERAL DO PARÁ CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE INFORMÁTICA DISCIPLINA: ESTRUTURAS DE DADOS II PROFESSOR: A B C SAMPAIO. ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701 - PowerPoint PPT Presentation

Citation preview

Page 1: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

ORDENAÇÃO DE DADOS

INTERCALAÇÃO - MERGESORT

ALUNOS: JORLAN TEIXEIRA COSTA NO: 9908802701

JOSÉ MARIA DE OLIVEIRA Jr. NO: 9908803401

UNIVERSIDADE FEDERAL DO PARÁ

CENTRO DE CIÊNCIAS EXATAS E NATURAIS

DEPARTAMENTO DE INFORMÁTICA

DISCIPLINA: ESTRUTURAS DE DADOS II

PROFESSOR: A B C SAMPAIO

Page 2: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

CONSISTE EM DIVIDIR O VETOR EM DOIS OU MAIS, ORDELÁ-LOS SEPARADAMENTE E INTERCALÁ-LOS DOIS A DOIS FORMANDO, CADA PAR INTERCALADO, NOVOS SEGMENTOS ORDENADOS ATÉ QUE RESULTE APENAS UM SEGMENTO ORDENADO.

Page 3: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

PARA OBTER A ORDENAÇÃO DOS SEGMENTOS INICIAIS , PODE-SE USAR QUALQUER MÉTODO DE INTERCALAÇÃO.

Page 4: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

Segmentos previamente ordenados

intercala intercala

Intercala

ORDENADO

ORDENADO ORDENADO

Page 5: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

PARA NÃO USAR OUTROS MÉTODOS , PODEMOS INICIAR OS SEGMENTOS COM VALOR IGUAL A 1.

ESTE MÉTODO É CHAMADO DE MERGESORT.

Page 6: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

MÉTODO DA INTERCALAÇÃO SIMPLES-MERGESORT

INICIA-SE COM SEGMENTOS DE VALOR IGUAL A 1.

COMO CADA SEGMENTO POSSUI APENAS 1 ELEMENTO CADA , JÁ ESTÃO ORDENADOS.

Page 7: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

EXEMPLO

23 17 8 15 9 12 19 7

17 23 8 15 9 12 7 19

8 15 17 23 7 9 12 19

7 8 9 12 15 17 19 23

Page 8: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

QUANDO O VET0R NÃO FOR UMA POTÊNCIA DE 2, OCORRERÁ UM SEGMENTO RESULTE SEM UM PAR PARA SER INTERCALADO.

ESSE SEGMENTO QUE SERÁ O ULTIMO DO VETOR É TRANSCRITO PARA A INTERAÇÃO SUBSEQUENTE.

Page 9: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

EXEMPLO

23 17 8 15 9 12 19 7 14 10

17 23 8 15 9 12 7 19 10 14

8 15 17 23 7 9 12 19 10 14

7 8 9 10 12 15 17 19 23 10 14

7 8 9 10 12 14 15 17 19 23

Page 10: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

A IMPLEMENTAÇÀO DO MÉTODO É FEITA EM 3 NÍVEIS:

SIMPLEMERGE:

OPERAÇÃO DE INTERCALAÇÃO DE UM PAR DE SEGMEMT0S

MERGEPASS:

INTERCALAÇÃO DE TODOS OS PARES DE SEGMENTOS

ORDENADOS.

MERGESORT:

EFETUA TODA A SEQUÊNCIA DE INTERCALAÇÃO

Page 11: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

procedure simplemerge(c: vet; cI1, CF1,CI2, CF2: integer; ca: vet; r: integer);varCAI1, CAI2, k, i: integer;begin CAI1:= CI1; CAI2:= CI2; k:= r; while (CAI1 <= CF1) and (CAI1 <= CF2 do begin if c[CAI1] < c[CAI2] then begin ca[k]:= c[CAI2]; CAI1:= CAI1 + 1 end {then}

Page 12: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

else begin ca[k]:= c[CAI2]; CAI2:= CAI2 + 1 end; {else} k:= k + 1; end; {while} if CAI1 > CF1 then for i:= CAI2 to CF2 do begin ca[k]:= c[i]; k:= k + 1; end {for} else

Page 13: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

for i:= CAI1 to CF1 begin ca[k]:= c[i]; k:= k + 1; end; {for}end; {simplemerge}

Page 14: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

procedure mergepass(c, ca: vet;n, l: integer);varp, q, r, i: integer;begin p:= 1; q:= p + l; r:= 1; while q <= n do begin simplemerge(c, p, q - 1, q, min(q + l - 1, n), ca, r); r:= r + 2*l; p:= q + l; q:= p + l; end; {while}

Page 15: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

if p <= n then for i:= p to n do ca[i]:= c[i];end; {mergepass}

Page 16: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

procedure mergesort(c: vet; n: integer);varl, i: integer;ca:vet;begin l:= 1; while l < n do begin if (l = 1) or (l = 4) or (l = 16) or (l = 64) or (l = 256) or (l = 1024) or (l = 2048) or (l = 4096) then mergepass(c, ca, n, l) else mergepass(ca, c, n, l); l:= 2*l; end; {while}

Page 17: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

if (n = 2) or (n = 8) or (n =32) or (n = 128) or (n = 512) or (n = 2048) or (n =8192) then for i:= 1 to n do c[i]:= ca[i];end; {mergesort}

Page 18: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

EXEMPLO DE INTERCALAÇÃO

VETOR C 25 19 18 10

P Q

CAI1:= CI1 CAI2:= CI2

CF1 CF2

P Q

CAI1:= CI1 CAI2:= CI2

CF1 CF2

VETOR CA 19 10

K:= R K K:= R K

25 18

Page 19: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

VETOR CA 19 25 10 18

P Q

CAI1:= CI1 CF1 CAI2:= CI2 CAF2

VETOR C 10

K:= R K

18 19 25

Page 20: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

INTERCALANDO SEQUÊNCIAS NATURAIS

CONSISTE EM TIRAR PROVEITO DAS EVENTUAIS ORDENAÇÕES PARCIAIS.

BUSCA-SE OS SEGMENTOS JÁ ORDENADOS EFETUANDO AS INTERCALAÇÕES A PARTIR

DELES.

Page 21: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

EXEMPLO

23 74 42 11 65 58 87 99 36 94

23 42 74 11 58 65 87 99 36 94

11 23 42 58 65 74 87 99 36 94

11 23 96 42 58 65 74 87 94 99

Page 22: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

ESTE MÉTODO DIMINUI O NÚMERO DE INTERÇÕES EFETUADAS EM APENAS UMA

UNIDADE POR ISSO NÀO VALE A PENA UTILIZAR ESTE MÉTODO.

Page 23: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

EXEMPLO DE INTERCALAÇÃO

INTERCALAÇÃO DE ARQUIVOS CLASSIFICADOS

A INTERCALAÇÃO É FEITA COMPARANDO- SE OS PRIMEIROS REGISTROS DE CADA UM DOS ARQUIVOS A SEREM INTERCALADOS.

SELECIONA-SE AQUELE QUE POSSUIR A MENOR CHAVE, TRANSFERINDO-A PARA A SAÍDA.

ESSE REGISTRO É SUBSTITUÍDO PELO SEU SUCESSOR E O PROCESSO É REPETIDO ATÉ QUE NÃO SOBRE NENHUM REGISTRO.

Page 24: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

• ARQUIVOS

ENTRADA: FILE(1) , FILE(2) , . . . , FILE(P) ;

SAÍDA: FILE(0).

IMPLEMENTAÇÃO

Page 25: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

• ÁRVORE DE SELEÇÃO

st[ 1 ] É A RAIZ DA ÁRVORE;

st[ 2i ] É A SUBÁRVORE DA ESQUERDA DE st[ i ]

st[ 2i + 1 ] É A SUBÁRVORE DA DIREITA DE st[ i ]i = 1, n div 2

1 p-1 p 2p-1

nodos não -folhas nodos folhas

Page 26: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

14

17

21

35

.

.

.

05

10

18

22

.

.

.

13

15

19

23

.

.

.

08

29

35

72

.

.

.

09

11

16

24

.

.

.

Page 27: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

17

21

35

.

.

.

10

18

22

.

.

.

15

19

23

.

.

.

29

35

72

.

.

.

11

16

24

.

.

.

14 13

09 0805

Page 28: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

17

21

35

.

.

.

10

18

22

.

.

.

19

23

.

.

.

29

35

72

.

.

.

11

16

24

.

.

.

14 15

09 080513

Page 29: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

17

21

35

.

.

.

18

22

.

.

.

19

23

.

.

.

29

35

72

.

.

.

11

16

24

.

.

.

14 15

09 081013

05

Page 30: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

17

21

35

.

.

.

18

22

.

.

.

19

23

.

.

.

29

35

72

.

.

.

16

24

.

.

.

14 15

09

081013

05

11

Page 31: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

17

21

35

.

.

.

18

22

.

.

.

19

23

.

.

.

35

72

.

.

.

16

24

.

.

.

14 15

09 08

1013

05

11 29

Page 32: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

procedure filemerge ( file, p, n );

begin

for i:=0 to p do

reset ( file (i) );

for i:=0 to p-1 do

st [1]:=minkey;

for i:=0 to 2*p-1 do

read (file (i-p+1) , st [i] );

for i:=0 to p-1 do

pop (st , file, 2*p-1 );

Page 33: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

write (file (0), st[1] );

for i:=2 to n do

begin

pop (st , file, 2*p-1 );

write (file (0), st[1] );

end;

end;

Page 34: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

CLASSIFICAÇÃO

POR

DISTRIBUIÇÃO DE CHAVES

Page 35: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

ESTE MÉTODO DE CLASSIFICAÇÃO ANTECEDE AOS COMPUTADORES DIGITAIS. ELE É UMA ADAPTAÇÃO DO PROCESSO DE CLASSIFICAÇÃO MECÂNICA DE CARTÕES PERFURADOS, UTILIZADOS PARA ARMAZENAMENTO DE DADOS.

Page 36: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

EXEMPLO

POR EXEMPLO, SUPONHAMOS QUE UM ARQUIVO FORMADO POR 20 CARTÕES TIVESSE, EM UM CERTO CAMPO, OS SEGUINTES VALORES PERFURADOS:

523, 018, 125, 937, 628, 431, 243, 705, 891, 362, 429, 005, 540, 353, 115, 427, 910, 580, 174, 456

Page 37: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

A CLASSIFICAÇÃO PELA COLUNA QUE CONTÉM O DÍGITO DA UNIDADE PRODUZIRIA A SEGUINTE DISTRIBUIÇÃO PELOS ESCANINHOS

523, 018, 125, 937, 628, 431, 243, 705, 891, 362, 429, 005, 540, 353, 115, 427, 910, 580, 174, 456

0 1 2 3 4 5 6 7 8 9

523 018125 937243

540910580

431891

362

353

174705005115

456427 628

429

CLASSIFICAÇÃO PELAS UNIDADES

Page 38: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

RECOLHENDO OS CARTÕES NA ORDEM DESCRITA,TEMOS:

540, 910, 580, 431, 891, 362, 523, 243, 353, 174, 125, 705, 005, 115, 456, 937, 427, 018, 628, 429

CLASSIFICANDO PELA COLUNA DAS DEZENAS, OBTEMOS:

0 1 2 3 4 5 6 7 8 9

540 910 580431 891362523 243

353 174125

705005 115 456937

427018628 429

Page 39: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

COLOCANDO-OS EM ORDEM, TEMOS:

705, 005, 910, 115, 018, 523, 125, 427, 628, 429,431, 937, 540, 243, 353, 456, 362, 174, 580, 891

CLASSIFICANDO PELA COLUNA DA CENTENA, TEMOS:

0 1 2 3 4 5 6 7 8 9

427 115 891

431

910628243 429

523 705

580

005018 125 540 937

174

353362

456

Page 40: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

AGORA FINALMENTE RETIRANDO-OS EM ORDEM OBTEMOS OS CARTÕES NA ORDEM DESEJADA

005, 018, 115, 125, 174, 243, 353, 362, 427, 429,431, 456, 523, 540, 580, 628, 705, 891, 910, 937

Page 41: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

MÉTODO DA INDEXAÇÃO DIRETA - RADIXSORT

• UTILIZA-SE O DÍGITO COMO UM ÍNDICE QUE

VAI REMATER O DADO TODO PARA O ESCANINHO

CORRESPONDENTE.

• UTILIZA-SE UMA TABELA DE FREQUÊNCIAS

PARA CONTABILIZAR O NÚMERO DE CHAVES.

Page 42: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

• UTILIZA-SE UMA TABELA DE FREQUÊNCIAS

ACUMILADASPARA INDICAR A POSIÇÃO

INICIAL DE CADA ESCANINHO.

• A MEDIDA QUE AS CHAVES VÃO SENDO DISTRIBUÍDAS

OS PONTEIROS VÃO SENDO INCREMENTADOS.

Page 43: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

DÍGITO

FREQ.

FREQ. AC.

0 1

3

0

2

3

2

1

5

3 4 5 6 7 8 9

3 1 4 1 2

106 149

2 1

191715

INDICA O NÚMERO DE OCORRÊNCIAS DAS CHAVES

INDICA A POSIÇAÕ INICIAL DE CADA ESCANINHO

Page 44: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

{indica o dígito correspondente ao passo}funtion parte (ch: integer; passo: 1..4);begin case passo of 1: parte:= ch mod 10; 2: parte:= (ch mod 100) div 10; 3: parte:= (ch mod 1000) div 100; 4: parte:= ch div 1000; end;end;

Page 45: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

procedure distribuicao(c1:vet; n1:0..9999; p1: ..4);varc2: vet; f, fac: vet2; v: 0..9; i: 0..n1; k: 0..9999;begin for i:= o to 9 do f[i]:= 0 {inicializa a } { tabela de frequências}

Page 46: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

for i:= 1 to n1 do begin

v:= parte(c1[i], p1); f[v]:= f[v] + 1

end; fac[0]:= 0;

fac[1]:= f[0];

for i:= 2 to 9 do fac[i]:= fac[i - 1] + f[i - 1];

Page 47: ORDENAÇÃO DE DADOS INTERCALAÇÃO - MERGESORT ALUNOS: JORLAN TEIXEIRA COSTA N O : 9908802701

{fase de distribuição}for i:= 1 to n1 do begin v:= parte(c1[i], p1); k:= fac[v]; c2[k]:= c1[i]; fac[v]:= fac[v] + 1; end;end{distribuicao}