Vous êtes sur la page 1sur 4
a METODA DIVIDE ET IMPERA je medodei exprimd concis modalitatea de a re: uncle medodei exprima coneis le a rezolva Numer impera (imparte $i stipaneste) imparte problema de oman © abordare de Heme similare celei inifiale, dar de dimensiune mai mich f i ne alfile pentra a exea o solulie @ probleme initiale, © Fezolva si apoi Ge al Jemele rezultate sunt similar i ini Hpenarcee. prob sunt similare celei inifiale, : . Netoda “Divide et Impera” implica trei pasi la fiecare mivel dec poate exprima it ivel de recursivitate: te problema intr-un numar de subprobleme de acelagi tip, dar de diver ane mai , siune mai tipul div multe prot recutsiv- im micd. Sstapaneste subproblemele prin rezolvarea acestora in mod recursiv. Daca dimensiunih ; nile ra sunt suficient de mici, rezolva subproblemele nerecursiv. Combina solutiile tuturor subproblemelor in solutia finala pentru problema inifiald. Pentru aplicarea metodei se foloseste un subprogram recursiv. a subprogram Div_Imp(P) Teck dimensiunea problemei p este maze atunci pentru i:el, k executaé Apel Div_Imp (Pi) {aplicd metoda pentru fiecare din subproblemele pi ace’ problemei inifiale p} combina solutiile subproblemelor pi altfel jcermina solutia problemei p {problema de dimensiune mic’) Pentru a intelege esenta metodei vom prezenta cateva aplicatii (unele cunoscute) care sunt rezolvate utilizand metoda “Divide et Impera”” * & Aplicatii rezolvate Se i) Sortarea prin interclasare(MergeSort}. sir cu n elemente intregi. Rezolvare: Algoritmul de sortare prin interclasare urmeazi indeaproape pasii metodei “Divide et Impera”. Intuitiv, acesta opereaza astfel: imparte: Descompune sirul de n elemente care urmeaza a fi ordonat in doua subsiruri de cate n/2 elemente. Stapaneste: Ordoneaza recursiv cele doua subsiruri utilizénd sortarea prin interclasare. Combing: Interclaseaza cele doua subsiruri ordonate. se ordoneze crescator prin interclasare un Recursivitatea se opreste cAnd girul de sortat are lungimea 1, deoarece un sir de lungime 1 este deja ordonat (aceasta este subproblema de dimensiume mic& care se poate rezolva direct), Procedura recursiva de sortare este: Procedura MergeSort(X, p,q) Gyet peq atunes, ne (p+a) /2) Mergesort tx, p,m) MergeSort(X,mt+1,q) Interclasare(X,p,q,m) ___ Procedura MergeSort sorteazi elementele din subvectorul X{p.-al (clementele de fe indicele p pana la indicele q din vectorul X. Daca p27, subvectorul are cel mult un elemer Sieste, prin urmare, deja sortat, deci, ramura altfel nu mai apare. a one e imparte X[p..q) ig & care i c “ nui indice th nfinind [(V2}+1 element s Jaca UN +1.g] eo! . * » calcula Xl veetori. Sed] elemente si Nm + interclaseana SE Eee ee re ine inlosa Sara org Sore poms) vector orcomat care infosys : ~ proced subvec ‘ tat de precede jorma fh cat a +L.g) pentr Ly nul C proce. . x mf si Nim’ ee Mpa. Pav Merieeer ae este: ” int mi typedef int vector (50); if (psa) { vector X; int ni m=Partitie(X, p,q); int Partitie(vector X, int p, int g) { QuickSort (x, p,m) + int i,j,a, temps Quicksort (X,m+1,q) aex(pl? i=p-1; jeatls ) while (ia); cin>on; do { for(i pitt) ¢ ite cout>X[i} i if (ich) { ) temp=X(ils X(iJ=X(5]7 QuickSort (x, 1,n}i X(j]=temp: cout<<”Vectorul ordonat este:”<X[m] atunci cdutam recursiv valoarea v in subvectorul X[m+1..q], care are toate elementele mai mari decat v. Daca v, Gy, vey ew

Vous aimerez peut-être aussi