Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Masol/1 A másoló eljárás PROC masol ([] REAL ezt, ide) SEQ ide := ezt Az összefésülő eljárás feje PROC fesul ([] REAL t1, t2, tki) -- t1 és t2 összefésülése.

Hasonló előadás


Az előadások a következő témára: "Masol/1 A másoló eljárás PROC masol ([] REAL ezt, ide) SEQ ide := ezt Az összefésülő eljárás feje PROC fesul ([] REAL t1, t2, tki) -- t1 és t2 összefésülése."— Előadás másolata:

1 masol/1 A másoló eljárás PROC masol ([] REAL ezt, ide) SEQ ide := ezt Az összefésülő eljárás feje PROC fesul ([] REAL t1, t2, tki) -- t1 és t2 összefésülése tki -be INT x1,x2,xki,slen: SEQ PAR x1 := 0 x2 := 0 xki := 0 slen := SIZE t1 -- aktuális tömbparaméter elemszáma

2 1. fázis: szigorúan sorosan vagy t1-ből vagy t2-ből WHILE (x1<slen) AND (x2<slen) -- összefésülés SEQ IF t1[x1] < t2[x2] SEQ tki[xki] := t1[x1] x1 := x1+1 TRUE SEQ tki[xki] := t2[x2] x2 := x2+1 xki := xki+1 fesul/1

3 2. fázis: párhuzamosan a maradékot a hosszabbikból PAR IF x1<slen -- maradékok másolása párhuzamosan masol ([t1 FROM x1], [tki FROM xki FOR slen-x1]) TRUE SKIP IF x2<slen masol ([t2 FROM x2], [tki FROM xki FOR slen-x2]) TRUE SKIP fesul/2

4 Egyre növekvő hosszúságú szakaszokat fésülünk párhuzamosan össze PROC Menet ([] REAL ezt, ide, VAL INT slen) -- összefésülések egy menete PAR x=1 FOR SIZE T / 2*slen -- részek összefésülése -- párhuzamosan, ha lehet -- ágszámot dinamikusan megadni fesul ([ezt FROM (2*(x-1))*slen FOR slen], [ezt FROM (2*x-1) *slen FOR slen], [ ide FROM (2*(x-1))*slen FOR 2*slen]) menet/1

5 slen=1 esetére x = 1 fesul([ezt FROM 0 FOR 1], [ezt FROM 1 FOR 1], [ide FROM 0 FOR 2] ) x = 2 fesul([ezt FROM 2 FOR 1], [ezt FROM 3 FOR 1], [ide FROM 2 FOR 2] ) x = 3 fesul([ezt FROM 4 FOR 1], [ezt FROM 5 FOR 1], [ide FROM 4 FOR 2] ) x = 4 fesul([ezt FROM 6 FOR 1], [ezt FROM 7 FOR 1], [ide FROM 6 FOR 2] ) menet/2 x=1x=2x=3x=4

6 slen=2 esetére x = 1 fesul([ezt FROM 0 FOR 2], [ezt FROM 2 FOR 2], [ide FROM 0 FOR 4] ) x = 2 fesul([ezt FROM 4 FOR 2], [ezt FROM 6 FOR 2], [ide FROM 4 FOR 4] ) menet/3 x=1x=2 slen=4 esetére x = 1 fesul([ezt FROM 0 FOR 4], [ezt FROM 4 FOR 4], [ide FROM 0 FOR 8] ) x=1

7 SEQ slen := 1 -- kezdeti szakaszhossz WHILE slen < SIZE t SEQ Menet (T,W,slen) -- páratlanadik menet: T ==> W slen := 2*slen IF slen < SIZE t -- kell még menet SEQ Menet (W,T,slen) -- párosadik menet: W ==> T slen := 2*slen TRUE T := W -- páratlan menet volt; -- eredmény visszamásolása sort/1


Letölteni ppt "Masol/1 A másoló eljárás PROC masol ([] REAL ezt, ide) SEQ ide := ezt Az összefésülő eljárás feje PROC fesul ([] REAL t1, t2, tki) -- t1 és t2 összefésülése."

Hasonló előadás


Google Hirdetések