Sei sulla pagina 1di 4

Pentiuc St. Gh.

Facultatea de Inginerie Electrica Suceava

Laborator ASA (8)

Lucrarea de laborator nr. 8

Metoda Divide et Impera


Obiective

Rezolvare prin DFHDVW PHWRG D SUREOHPHL GHWHUPLQ ULL YDORULORU [WUHPH GLQWUXQ LU Programarea unei metode de interclasare Studiul VRUW ULL prin interclasare a XQXL LU

Principiul metodei Divide et Impera


Etapele generale de rezolvare 1. GHVFRPSXQHUHD SUREOHPHL vQ GRX VDX PDL PXOWH VXESUREOHPH 'LYLGH 2. UH]ROY VXESURPHOH VHSDUDW ,PSHUD 3. FRPELQ UH]XOWDWHOH SDU LDOH

 'HWHUPLQDUHD YDORULORU H[WUHPH DOH XQXL LU


Prin metoda Divide et impera se mparte sirul de lungime n n doua subsiruri de lungime n/2, apoi acestea n alte dous subsiruri de lungime n/4, s.a.m.d. pna cnd obtinem subsiruri de lungime mai mica sau egal cu 2. Dac n este o putere a lui 2 atunci se va ajunge la subsiruri elementare de lungime 2. procedura MAX_MIN(S,n,xmin,xmax) este daca nd2 atunci xmin=MIN(a,b) xmax=MAX(a,b) altfel *) determina S1 si S2 de lungime n/2 MAX_MIN(S1,n/2,x1,x2) MAX_MIN(S2,n/2,y1,y2) xmin=MIN(x1,y1) xmax=MAX(x2,y2) sfrsit Atunci cnd nd=2 este necesara o singura comparatie pentru a obtine att valoarea minima ct si cea maxima.

Pentiuc St. Gh. Facultatea de Inginerie Electrica Suceava

Laborator ASA (8)

*/ fie S={a,b} daca a<b atunci xmin=a xmax=b altfel xmin=b xmax=a

Tema 1 de realizat n timpul laboratorului


1.1. Scrieti un program Java care citeste datele siUXOXL L DILVHD] YDORDUHD PLQLP L FHD PD[LP  1.2. 6FULHWL R FODV JHQHUDO FDUH V SHUPLW LQL LDOL]DUHD LUXOXL vQ WUHL PRGXUL : o DOHDWRU GDF QLFLXQ SDUDPHWUX QX HVWH SUH]HQW vQ OLQLD GH FRPDQG o FX GDWH LPSOLFLWH vQ SUH]HQ D XQXL VLQJXU DUJXPHQW vQ OLQLD GH FRPDQG  o cu vDORULOH GLQ OLQLD GH FRPDQG 8WLOL]D L DFHDVW FODV SHQWUX WHVWDUHD SURJUDPXOXL

2. Interclasarea a dou siruri sortate


2SHUD LD GH LQWHUFODVDUH D GRX LUXUL RUGRQDWH UHDOL]HD] XQ VLQJXU LU RUGRQDW SULQ DPHVWHFDUHD HOHPHQWHORU FHORU GRX LUXUL  )XQFWLD GH PDL MRV SULPHVWH FD DUJXPHQWH FHOH GRXD VLUXUL VRUWDWH D>@ L E>@ UHWXUQDQG XQ tablou de lungimH HJDOD FX VXPD OXQJLPLORU OXL D L E FRQWLQDQG WRDWH YDORULOH FHORU GRXD siruri, sortate crescator.
package sortare; public class InterclasareT { public static int[] interclasare_t (int[] a, int[] b) { int n=a.length, m=b.length; int[] tmp = new int [n+m]; int i,j,k; for(i=j=k=0;i < n && j < m; k++) tmp[k] = a [i] < b [j] ? a [i++] : b [j++]; while (i<n) tmp [k++] = a [i++]; while (j<m) tmp [k++] = b [j++]; return tmp; } }

6H SRDWH REVHUYD F DFHDVW IXQF LH DUH FRPSOH[LWDWHD 2 QP  XQGH Q L P VXQW OXQJLPLOH FHORU GRX LUXUL D>@ L E>@ GDF VH FRQVLGHU FD RSHUD LL HOHPHQWDUH DWULEXLULOH vQ WPS Q H[HPSOXO FH XUPHD]  VXQW LQWHUFODVDWH GRX WDEORXUL D L E vQWU-unul nou, x.

Pentiuc St. Gh. Facultatea de Inginerie Electrica Suceava import sortare.*; public class TestInterclasare { public static void main(String args[]) { int[] a= new int[]{1,3,5,7,9,11,12}; int[] b= new int[]{0,2,4,6,8,10}; int[] x = InterclasareT.interclasare_t(a,b);

Laborator ASA (8)

System.out.print("Sirul sortat: "); for (int i=0;i<x.length;i++) System.out.print(x[i]+", "); } }

Se poate observa ca x[] este doar o referinta n clasa TestInterclasare initializata cu valoarea returnata de functia interclasare_t(a,b) care face alocarea tabloului rezultat. ,HVLUHD SURGXVD HVWH XUP WRDUHD
C:\pg\asa\Cursuri_ASA\Curs_8_PD\Merge>java TestInterclasare Sirul sortat: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,

Tema 2 de realizat n timpul laboratorului


 6FULH L R QRX IXQF LH GH LQWHUFODVDUH FDUH V DGPLW OD LQWUDUH XQ LU [[] de lungime n, iar LUXULOH GH LQWHUFODVDW V ILH QXPDL VXELUXUL consecutive din DFHVW LU [[], LDU LUXO UH]XOWDW VD fie depus tot n x.. Exemplu de apel interclasare( i, k, j); // 0 < i<k<j < n

6H YRU LQWHUFODVD LUXULOH [>L@[>L@[>N@ L [>N@ [>M@ , n cazul acestui apel reyultatul va fi sirul (x[i],x[i+1],...,x[k]., x[j])

AlgoritmXO YD vQFHUFD vPS U irea problemei n subprobleme de dimensiuni aproximativ egale. LUXO LQL ial va fi descompus n GRX LUuri care vor fi sortate separat. Fiecare VXELr poate fi divizat la rndul lui n alte GRX VXELruri, .a.m.d. Apoi vom uni VXELrurile GRX cte GRX UHVSHFWvQG RUGLQHD FUHVF toare (elementHOH ORU YRU IL LQWHUFODVDWH RE inndu-se LUul final. Exemplu: Fie LUuO 6   ,QL ial el este divizat n GRX VXELruri de cte 4 elemente fiecare. Apoi acestea se mpart n LUuri de 2 elemente.
x = (15,7,9,3 , 4,12,11,5) | +----------------------------+ | anaORJ VXEirul doi +----------------+ interclasare +----------+ +-----+-----+ |(15,7) (9,3)+--------------->|(3,7,9,15)| ... |(4,5,11,12)| +----------------+ +----------+ +-----------+ RUGRQDUH VXEiruri interclasare VXEiruri 4 elemente | | | | +---------------------------------+ +--------+ +-------+ | |(15) (7)| |(2) (3)| | +--------+ +-------+ | | | UH]XOW : (3,4,5,7,9,11,12,15)

3. Sortarea prin interclasare

Pentiuc St. Gh. Facultatea de Inginerie Electrica Suceava

Laborator ASA (8)

Algoritmul poate fi reprezentat prin XUP WRDUHD SURFHGXU :


IXQF LH SORT_M(i,j) este | GDF i=j atunci | | *)ntoarce xi | | altfel | | k=[(i+j-1)/2] | | *)ntoarce INTERCLASARE ( SORT_M (i,k), SORT_M(k+1,j) ) | VIvUit

'H QRWDW F VXELUXULOH WUHEXLH V DLE OXQJLPLOH SXWHUL DOH OXL 

Tema 3 de realizat n timpul laboratorului


6WXGLD L DFHVW DOJRULWP L vQFHUFD i o implementare n Java cu ajutorul clasei de interclasare SXV OD GLVSR]L LH

7HP SHQWUX DFDV


3URJUDPD L DOJRULWPXO GH VRUWDUH L LQWHUFODVDUH 8WLOL]D L DPEHOH IXQF LL GH LQWHUFODVDUH FHD IXUQL]DW L FHD UHDOL]DW GH GY vQ WLPSXO ODERUDWRUului). 7HVWD L FODVD UHDOL]DW FX DMXWRUXO clasei GH LQ LDOL]DUH LU realizate la 1.2. LUXO SUHOXFUDW va fi DILDW L YHULILFDW automat GDF HVWH VRUWDW FUHVF WRU

Potrebbero piacerti anche