Sunteți pe pagina 1din 8

Sortarea const n organizarea datelor n conformitate cu un algoritm matematic de distribuire.

Sunt dou tipuri de algoritmi de sortare: Sortarea intern - utilizeaz doar resursele memoriei operative (ex. metoda seleciei, metoda prin inserie, metoda rapid i metoda bulelor) Sortarea extern - utilizeaz memorie suplimentar.

Sortarea prin inserie const n selectarea celui mai mic sau mai mare element i plasarea lui la nceputul masivului. Complexitatea acestui algoritm este de n2, unde n nr. elementelor tabloului.

Sortarea prin selectie const n nserarea elementelor din tablou direct n poziia sortat. Algoritmul const n compararea fiecrui element cu precesorii si i poziionarea lui n aa fel nct tabloul s fie sortat. Complexitatea acestui algoritm este deasemenea n2

Sortarea prin metoda bulelor const n compararea a doua elemente alaturate i scimbarea lor cu locul in caz de necesitate. Complexitatea - n2.
Dezavantaj: este unul din cei mai leni algoritmi de sortare. Metoda poate fi imbuntit dac: dup fiecare trecere, se va reine ultima poziie din tablou n care a avut loc o interschimbare, iar trecerea urmtoare se va efectua doar pin la acea poziie. n cazul n care la o trecere nu a avut loc nici o interschimbare algoritmul se va incheia.

Shaker Sort - Shaker sort (cocktail sort, shake sort) is a stable sorting algorithm with
quadratic asymptotic complexity . Shakersort is a bidirectional version of bubble sort. Shaker sort unlike bubble sort orders the array in both directions. Hence every iteration of the algorithm consists of two phases. In the first one the lightest bubble ascends to the end of the array, in the second phase the heaviest bubble descends to the beginning of the array.

Parametri care reflecta eficienta


Algoritmii de sortare se deosebesc intre ei prin eficienta, timp de executie necesar, exprimat prin functia O. Sint folositi pentru aprecierea eficientei si: numarul compararilor de chei efectuate pentru sortare (C), mai ales atunci cind cheile sint siruri lungi de caractere si numarul miscarilor (asignarilor) de elemente (M),atunci cind dimensiunea elementelor tabloului este mare, in aceasta situatie fiind indicat ca pentru sortare sa se foloseasca un tablou paralel de cursori la elementele celui initial. Viteza unui algoritm este msurat n diverse moduri. Cea mai simpl metod utilizeaz complexitatea n timp pentru a determina Ordinul unui algoritm: de multe ori, este posibil realizarea unui algoritm mai rapid n detrimentul spaiului utilizat. Spaiul unui

algoritm este de fapt alctuit din dou lucruri separate dar n legtur. Prima parte este spaiul pe disc (sau echivalentul acestuia, depinznd de hardware i limbaj) ocupat de ctre executabilul compilat din codul surs reprezentare a algoritului. Cealalt parte msurat a spaiului
unui algoritm este cantitatea de memorie alocat temporar n timpul procesrii.

Shell Sort Complexitatea : O(N * log^2 N) Algoritmul shell sort lucreaz similar, doar c deplaseaz elementele spre poziia final cu mai mult de o poziie. Se lucreaz n iteraii. n prima iteraie se aplic un insertion sort cu salt s1 mai mare dect 1. Asta nseamn c fiecare element din sirul iniial este deplasat spre stnga cu cte s1 poziii att timp ct ntlneste elemente mai mari dect el. Se repet asemenea iteraii cu salturi din ce n ce mai mici s2, s3, s4, etc. Ultima iteraie se face cu saltul 1. Aceast ultim iteraie este practic un insetion sort clasic. Principiul este c dup fiecare iteraie sirul devine din ce n ce mai sortat. Iar cum algoritmul insertion sort funcioneaz cu att mai repede cu ct sirul este mai sortat, per ansamblu vom obine o mbuntire de vitez.
Acest lucru se poate realiza dac n loc de a compara elemente nvecinate, comparm elemente aflate la o anumit distan ntre ele. n cazul n care ele nu sunt n ordinea cerut, ele se vor permuta. n felul acesta elementele se deplaseaz fcnd salturi mai mari dect o poziie. Distana dintre elementele comparate se numete increment.

incrementului iniial egal cu n/2, unde n este numrul elementelor irului de sortat. De asemenea, dup fiecare parcurgere a irului, acesta se va njumti.

Nr componente vector:7. nainte ****** SORT SHELL ****** Interschimbare element Interschimbare element Interschimbare element Interschimbare element Interschimbare element Interschimbare element Interschimbare element Interschimbare element Interschimbare element Interschimbare element Dup ordonare SHELL: 0 cu 1 cu 2 cu 3 cu 0 cu 1 cu 3 cu 2 cu 4 cu 3 cu

de ordonare: 3, Increment 4, Increment 5, Increment 6, Increment 1, Increment 2, Increment 4, Increment 3, Increment 5, Increment 4, Increment 3 3 3 3 1 1 1 1 1 1

v = 46 30 32 40 6 17 45 40 30 32 46 6 17 45 40 6 32 46 30 17 45 40 6 17 46 30 32 45 40 6 17 45 30 32 46 6 40 17 45 30 32 46 6 17 40 45 30 32 46 6 17 40 30 45 32 46 6 17 30 40 45 32 46 6 17 30 40 32 45 46 6 17 30 32 40 45 46

v = 6 17 30 32 40 45 =

Heapsort
Gasirea minimului din tablou, operatie ce are loc la fiecare pas, se bazeaza pe aducerea tabloului la forma de ansamblu Orice tablou poate fi transformat usor intr-un arbore binar elementul minim se afla intotdeauna pe prima pozitie Daca nu este indeplinita una din conditiile Ai A2i si Ai A2i+1 atunci se va interschimba Ai cu minimul dintre A2i si A2i+1 Elementele astfel interschimbate vor indeplini conditia de ansamblu Pentru o eficienta cat mai mare, urmarirea acestui gen de situatii trebuie facuta de la dreapta la stanga, in caz contrar fiind nevoie de reveniri repetate chiar si dupa ce o situatie de neconcordanta a fost rezolvata dupa fiecare pas, primul element al tabloului, care este elementul minim, va fi eliminat si pus la pastrare, algoritmul continuand pe restul tabloului La fiecare pas, tabloul scade cu un element De asemenea, se poate observa ca la fiecare pas, in afara de radacina arborelui, toate celelalte elemente indeplinesc deja conditia de ansamblu datorita pasului anterior Rezulta ca sarcina fiecarui pas nou este mult usurata de activitatea pasului/pasilor precedenti, ceea ce face ca algoritmul HeapSort sa fie foarte performant Algoritmul HeapSort este cel mai slab algoritm de clasa O(Nlog2N) Este mai slab (dar nu cu mult) decat algoritmii din familia QuickSort, dar are marele avantaj fata de acestia ca nu este recursiv Algoritmii recursivi ruleaza rapid, dar consuma o mare cantitate de memorie, ceea ce nu le permite sa sorteze tablouri de dimensiuni oricat de mari

Repetand algoritmul de transformare a tabloului in ansamblu si eliminand dupa fiecare pas elementul minim obtinut (radacina arborelui), vom obtine in tabloul auxiliar elementele ordonate
Heapsort is the one of the most efficient comparison-based algorithms with the asymptotic complexity . Complexity of heapsort is guaranteed, hence it is fitting to use this algorithm in real time systems instead of quicksort, which is in average case faster, but its worst case complexity is . Heapsort is based on usage of the binary heap data structure which acts as a priority queue. If we insert all elements of the array into the priority queue, the operation poll will always return (and remove) the element of the heap, which has the highest priority. If we use poll operation times, we will obtain list of sorted elements. The heapsort algorithm consists of these steps: 1. Build the heap using all elements of the array. 2. Poll the highest element of the heap. 3. Swap it with the last element of the heap (in array). 4. Reduce the heap size by 1 (elements at the end of the heap are already sorted). 5. Repair the heap (move element swapped in 3 to its correct place in the structure). 6. If there are any elements remaining in the heap GOTO: 2. 7. Array is sorted according to the priority of the elements in reverse order.

1.

Starea initial a matricei

8 23 5 65 |44| 33 1 6 |--------|

Pasul 1 (n calitate de x se alege a[5])

8 23 5 6 44 33 1 65 |---| 8 23 5 6 1 33 44 65 8 23 |5| 6 1 33 44 65 |--------|

Pasul 2 (n submatricea a[1], a[5] n calitate de x se alege a[3])

1 23 5 6 8 33 44 65 |--| 1 5 23 6 8 33 44 65 1 5 23 |6| 8 33 44 65

Pasul 3 (n submatricea a[3], a[5] n calitate de x se alege a[4])

|----| 1 5 8 6 23 33 44 65 1 5 8 |6| 23 33 44 65

Pasul 4 (n submatricea a[3], a[4] se alege a[4])

|--|

1 5 6 8 23 33 44 65 Sortarea rapid QuickSort const n mprirea listei n dou pri n raport cu un pivot, n asa fel nct n partea stng a pivotului valorile s fie mai mici, iar n partea dreapt mai mari. Complexitatea acestui algoritm este n*log(n). . Ideea de baz a algoritmului const n faptul c selecteaz la ntmplare un element x al matricei, dup aceasta matricea se analizeaz din stnga, pn cnd nu ntlnete elementul a[i] astfel nct a[i]>x , i apoi matricea se studiaz din partea dreapt, pn cnd nu ntlnete elementul a[j] astfel nct a[j]<x. Aceste 2 elemente sunt schimbate, precum i procesul de vizualizare, compararea i schimbul continu pn cnd vom ajunge la elementul x. n rezultat, matricea se divide n dou pri stnga i dreapta, n partea stnga valorile cheie vor fi mai mici dect x, iar n partea dreapt valorile cheie vor fi mai mari dect x. n continuare procesul continu recursiv pentru partea stng i dreapt a matricei, pn cnd fiecare parte nu va conine exact un element.
Structuri de date. Clasificarea. C versus C++. 5

Clasificarea structurilor de date : I. Structuri de date elementare : - tablouri ( vectori, matrici, iruri de caractere ) - nregistrare - mulime - fiiere II. Structuri de date dinamice : - structura de tip list ( list simplu nlnuit, dublu nlnuit, circular, stiv, coad ) - structura de tip arbore: arbori binari, arbori binari de cautare, arbori oarecare. III. Structuri de tip graf : - grafuri neorientate - arbori - grafuri orientate

So, if you believe me, we have established that "C++ is not significantly worse than C". Let's have a look at what it is that makes C++ a better C: Stronger typing The type system in C++ is stronger than in C. This prevents many common programming errors - coupled with the next very important feature, the stronger type system even manages not to be an inconvenience. Parameterized types The template keyword allows the programmer to write generic (typeagnostic) implementations of algorithms. Where in C, one could write a generic list implementation with an element like: A bigger standard library C++ allows the full use of the C standard library. This is very important of course, as the C standard library is an invaluable resource when writing real world programs. However, C++ includes the Standard Template Library. The STL contains a number of useful templates, like the sort routine above. It includes useful common data structures such as lists, maps, sets, etc

Algoritmi combinatoriali. Introducere.


Combinatorica ramura care studiaza obiectele discrete in seturi.Se ocupa de studiul multimilor si modalitatile de a le combina. In particular sunt studiate : -combinatorica enumerativa(numarare); -design combinatoric si teoria matroizilor(generare si analiza); -combinatorica extremala(determinare a "celui mai mare", "celui mai mic" sau a "celui mai bun" obiect al mulimii); -combinatorica algebrica(determinarea structural algebrice ale acelor obiecte); Combinatorica vizeaz att rezolvarea de probleme ct i construciile teoretice, fiind dezvoltate metode teoretice puternice. Una din cele mai vechi i accesibile pri ale combinatoricii este teoria grafurilor, aceasta, la randul ei, avnd conexiuni cu multe alte domenii. Combinatorica este folosit frecvent in informatic pentru a estima numrul de elemente ale anumitor mulimi. Exemple de configuraii combinatorice,algorimti combinatoriali :aranamente,permutari,combinari,produs cartezian, submulimi ale unei mulimi, partiii ale unei mulimi. Pentru a formula i de a rezolva probleme combinatoriale, diverse modele de configuraii combinatorice. Exemple de configura ii combinatorice sunt:

5.Permutari, Combinari, Aranjamente

Permutarea este un concept matematic care se refer n mod uzual la numrul de posibiliti de rearanjare al unei liste ordonate de valori sau obiecte. Aadar o permutare poate fi neleas ca unul din n! moduri de a ordona liniar o mulime. ns n general nu este necesar ca obiectele permutate s fie ordonate liniar. Un alt exemplu este cel al unor bile diferit colorate, nirate pe o srm nchis. Aceast situaie va conduce la definiia abstract, matematic, a permutrii, n care nu mai sunt implicate ordinea sau alte determinri ale subiecilor permutai. Conceptul este studiat n cadrul combinatoricii. Aici conceptul poate extins prin conceptul de k-permutri sau aranjamente care arat numrul submulimilor ordonate ale unei mulimi date. O permutare este o coresponden biunivoc (element la element sau bijecie) ntre o multime M (finit) i ea nsi. Aranjamente n practic, de multe ori se ajunge la necesitatea de a alege dintr-o mulime oarecare de obiecte submulimi care au anumite proprieti sau de a aranja elementele unei mulimi ntr-o numit ordine. Domeniul matematicii care studiaz astfel de probleme se numete combinatoric i are importan pentru teoria probabilitilor, logica matematic, teoria numerelor, precum i pentru alte ramuri ale tiinei i tehnicii. Din aceast ramur a matematicii fac parte i aranjamentele. Definiie: Daca este o mulime cu elemente, atunci submulimile ordonate ale lui , avnd fiecare cte elemente, unde , se numesc aranjamente de elemente luate cte .\

COMBINARI
Numarul combinarilor a n elemente luate cate m este calculata cu formula:

6.Formule Herigonne, Pascal. Demonstratie. Exemple si aplicatii practice.


Sistemul major (de asemenea, numit,sistem mnemonic fonetic, sau sistemul mnemonic al lui Herigone) este o tehnic mnemonica utilizat pentru a ajuta la memorarea numerelor. Sistemul funcioneaz prin conversia numerelor n sunete consonantice, apoi n cuvinte prin adugarea de vocale.Sistemul functioneaza pe principiul c imaginile pot fi memorizate mai uor dect numerele. Fiecare cifr este asociata cu unul sau mai multe consoane. Vocalele i consoanele w, h, y i x sunt ignorate. Acestea pot fi utilizate ca "umplutur" pentru a face cuvinte sensibile din secvenele consonantice rezultate. Un avantaj al sistemului major este aceea c este posibil s se utilizeze la un calculator pentru a traduce automat numrul ntr-un set de cuvinte. Se poate alege apoi cel mai bun din mai multe alternative.
Cartografierea cea mai importanta este: Numeral Associated Consonants Mnemonic

s, z, soft c

"z" is the first letter of zero. The other letters have a similar sound.

7.Recursia. Algoritmi recursivi. Exemple:n!, nr Fibbonacci 7

n matematic i informatic, recursivitatea sau recursia este un mod de a defini unele funcii. Funcia este recursiv, dac definiia ei folosete o referire la ea nsi, crend la prima vedere un cerc vicios, care ns este numai aparent, nu i real. O funcie este numit funcie recursiv dac ea se autoapeleaz, fie direct (n definiia ei se face apel la ea nsi), fie indirect (prin apelul altor funcii). Limbajele C/C++ dispun de mecanisme speciale care permit suspendarea execuiei unei funcii, salvarea datelor i reactivarea execuiei la momentul potrivit. Pentru fiecare apel al funciei, parametrii i variabilele automatice se memoreaz pe stiv, avnd valori distincte. Un exemplu de funcie recursiv este funcia de calcul a factorialului, definit astfel: fact(n)=1, dac n=0; fact(n)=n*fact(n-1), dac n>0;`` 1 Fie irul lui Fibonacci, definit astfel: f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2), dac n>1. S se scrie un program care implementeaz algoritmul de calcul al irului Fibonacci att recursiv, ct i iterativ. S se compare timpul de execuie n cele dou situaii.