Search:


| Hemorrhoid pain relief


Algoritmi.


Prezentarea algoritmilor de sortare.

    1.Prezentarea algoritmului de sortare. >>>

    In domeniul calculatoarelor si al matematicii, un algoritm de sortare este o metoda prin care se aranjeaza elementele unui tablou intr-o ordine precisa.Cele mai folosite tipuri de date in cadrul acestor metode de sortare sunt tipul de ordin numeric si tipul lexicografic.Eficienta metodelor de sortare este importanta deoarece se pune un mare accent pe optimizarea altor algoritmi (cum sunt algoritmii de cautare) care necesitta sortarea tablourilor cu care lucreaza, devenind astfel mai eficienti; si se foloseste adesea pentru fixarea datelor catre un rezultat care mai este denumit si iesire.Printr-o iesire se intelege rezultatul sortarii.Mult mai formal, iesirea trebuie sa indeplineasca doua conditii:

    Conditia 1: Iesirea trebuie sa contina un tablou (sau lista) in care valorile termenilor sa fie aranjate in ordine crescatoare.Fiecare element al tabloului nu trebuie sa fie mai mic decat termenul de dinaintea lui, aceasta conditie fiind valabila pentru toti termenii din tablou.

    Conditia 2: Iesirea este o permutare, sau o reordonare a datelor de la intrare (datele care nu sunt sortate).Prin date de intrare intelegandu-se valorile termenilor prezenti in tabloul care trebuie sa fie sortat.

    La inceputul aparitiei calculatoarelor, problemele sortarii datelor au atras dupa sine multe studii si cercetari,probabil datorita complexitatii rezolvarii comportarii eficiente a unui algorim de sortare, desi initial se parea simplu de rezolvat.De exemplu sortarea prin interschimbare ("bubble sort") a fost analizata destul de timpuriu, prin anul 1956.De atunci multe din problemele sortarii s-au rezolvat prin aparitia altor algoritmi de sortare mult mai eficienti.Algoritmii de sortare sunt cel mai adesea utilizati in studiul performantei calculatoarelor.

    2.Criterii de performanta ale algoritmilor de sortare. >>>

    Algoritmii de sortare sunt cel mai adesea clasificati dupa urmatoarele criterii:

    Complexitatea metodei de sortare (calculelor).
    Acest criteriu determinand functionarea algoritmului si a metodelor proprii de a realiza o sortare.Daca un algoritm realizeaza o sortare prin procedee complexe el poate avea o comportare avantajoasa, comportare multumitoare sau o comportate dezavantajoasa.Prin complexitatea metodei (calcului) se intelege efectuarea operatiilor de comparare a valorii unui termen oarecare din tabloul de marime n, cu celelelte n valori ale termenilor prezenti in cadrul aceluiasi tablou.Pentru algoritmii de sortare eficienti functia de comportare va fi O(n logn), iar cea mai dezavantajoasa comportare poate fi in cazul incare functia de comportare este de ?(n2).Comportarea ideala pentru un algoritm de sortare este O(n).Algoritmii de sortare care folosesc numai valori abstracte,vor necesita ,in medie, un numar de ?(n log n) comparatii pentru a realiza o sortare completa.

    Complexitatea de sortare a termenilor cu valori repetate.
    Acesta caracteristica este prezenta in general la algorimtii care realizeaza o sortare interoioara ("pe loc").

    Utilizarea memoriei (sau a altor resurse ale calculatorului).
    In particular, unii algoritmi de sortare realizeaza sortari interioare ("pe loc"), astfel ca sunt necesare numai un numar de O(1) sau O(log n) locatii de memorie pentru ca si valorile celor mai indepartati termeni ai tabloului de sortat sa fie memorati.Sunt insa si alti algoritmi de sortare care desii utilizeaza metoda de memorare prezentata putin mai sus, necesita si locatii suplimentare de memorie pentru a putea memora temporar datele.

    Recursia.
    Exista algoritmi desortare poti fi de tip recursiv, sau nerecursivi, desii exista algorimi care detin ambele proprietati cum este de exemplu algoritmul de sortare prin interclasare ("mergesort").

    Utilizeaza sau nu utilizeaza metoda sortarii prin comparare.
    Un algoritm de sortare care utilizeaza pe baza metodei de comparare, testeaza valorile termenilor prezenti intr-un tablou sau lista ce trebuie sortata comparand doi termni aflati in tablou cum un operator (indiciu) de comparare,numit adesea si "pivot".

    Functionare cu mai multe metode de sortare.
    Sunt unii algoritmi de sortare care au fost dezvoltati in jurul metodei de sortare al altui algoritm de aceasi categorie.Adica au rezultat in urma unor imbunatatiri a metodelor de sortare a altor algoritmi de sortare, insa avand o comportare diferita primind astfel si o denumire specifica.De exemplu algorimul de sortare prin intershimbare cuprinde si metoda de sortare "bubblesort" si "quicksort", iar un alt exemplu este algoritmul de sortare prin selectie care si el cuprinde metoda de sortare "shakersort" si "heapsort".

    Stabilitatea algoritmilor de sortare.
    Un algoritm de sortare se numeste stabil numai daca pastreaza ordinea relativa a inregistrarilor care au aceeasi valoare.De exemplu, se presupune existenta unui tablou care trebuie sortat si in care sunt doi termeni care au valori identice A si B, iar termenul cu valoarea A este inaintea termenului cu valoarea B.Daca se sorteaza tabloul in care se afla cei doi termeni A si B aplicand un algoritm de sortare oarecare, si daca in urma sortarii tabloul va avea valoarea termenului A ca fiind tot inaintea termenului cu valoare B, atunci algoritmul cu care s-a efectuat sortarea se poate numi stabil.Cand termenii cu valori egale sunt indistinctibili, cum sunt datele care detin valori de tip intreg, stabilitatea nu reprezinta o problema.Iata un nou exemplu: sa presupunem ca urmatoarele perechi de numere trebuiesc sortate dupa prima coordonata:

    (4 , 1) (3 , 1) (3 , 7) (5 , 6).

    In acest caz,in urma sortarii sunt posibile doua rezultate (iesiri) diferite: un rezultat care pastreaza ordinea relativa a inregistrarilor termenilor cu valori identice,si un alt rezultat care nu pastreaza ordinea relativa a inregistrarilor:

    (3 , 1) (3 , 7) (4 , 1) (5 , 6) <- ordine pastrata
    (3 , 7) (3 , 1) (4 , 1) (5 , 6) <- ordine schimbata.

    Algoritmii de sortare nestabili ar putea schimba ordinea inregistrarilorpentru termenii cu valori identice, insa algoritmii stabili niciodata nu vor proceda asa.Algoritmii de sortare caracaterizati ca fiind nestabili, pot fi implementati ca sa devina stabili.O metoda pentru a realiza aceasta este prin extinderea artificiala a tabloului de sortat facand loc si cheii de cautat.Procedand asa comparatiile dintre o pereche de doi termeni care au valori identice vor fi nevoitisa foloseasca ordinea intrarilor conform ordinii initiale in care au fost introdusi in tabloul initial.Procedand asa va fi necesar un spatiu aditional de memorie pentru ca algorimul de sortare sa functineze corect.

    3.Lista algorimilor de sortare. >>>

    In tabloul de mai jos n reprezinta numarul de inregistrari a sortarilor facute, si k este lungimea valorilor medii.Coloanele Compoartare eficienta, comportare medie, comportare ineficienta reprezinta complexitatea segventelor(calulelor) realizate; mentionand ca nu se foloseste k ca termen fix (constant).Coloana denumita Memorie indica numai spatiul de memorie folosit de catre tablou, fara memorie suplimentara:

    Numele sortarii

    Comportare eficienta

    Comportare medie

    Comportare ineficienta

    Nr. accese la memorie

    Stabilitate

    Metoda sortarii

    Alte observatii

    Sortare interschimbare

    O(n)

    --

    O(n2)

    O(1)

    Da

    Inteschimbare

    Timpul este cea mai buna varianta

    Sortare selectie

    O(n2)

    O(n2)

    O(n2)

    O(1)

    Nu

    Selectie

    --

    Sortare insertie

    O(n)

    O(n + d)

    O(n2)

    O(1)

    Da

    Insertie

    d este numarul inversiunilor ->O(n2)

    Sortare insertie cu pas variabil

    --

    --

    O(n1.5)

    O(1)

    Nu

    Insertie

    --

    Sortare interclasare

    O(n log n)

    O(n log n)

    O(n log n)

    O(n)

    Da

    Interclasare

    --

    Sortare ansamble

    O(n log n)

    O(n log n)

    O(n log n)

    O(1)

    Nu

    Selectie

    --

    Sortarea rapida

    O(n log n)

    O(n log n)

    O(n2)

    O(log n)

    Nu

    Segmentare

    Variantele bune folosest un spatiu O(n)

    Tabloul de mai jos descrie algoritmii de sortare care nu folosesc metoda sortarii prin comparare.Astfel dar,ei nu sunt constransi prin realizare de segvente in timp conform O(n logn).Complexitatea segventelor algoritmilor de mai jos e reprezentata prin termenul n care reprezinta numarul de termeni care trebuiesc sortati,k dimensiunea numarica a valorii termenilor si s dimensiunea folosita pentru implementare:

    Numele sortarii

    Comportare eficienta

    Comportare medie

    Comportare ineficienta

    Nr. accese la memorie

    Stabilitate

    Sortarea "Pigeonhole"

    O(n+2k)

    O(n+2k)

    O(n+2k)

    O(2k)

    Da

    Sortarea "Bucket"

    O(n)

    O(n)

    O(n)

    O(2k)

    Da

    Sortarea "Counting"

    O(n+2k)

    O(n+2k)

    O(n+2k)

    O(n+2k)

    Da

    Sortarea "LSD Radix"

    O(nxk/s)

    O(nxk/s)

    O(nxk/s)

    O(n)

    Da

    Sortarea "MSD Radix"

    O(nxk/s)

    O(nxk/s)

    O(nx(k/s)x2s)

    O((k/s)x2s)

    Nu

    Sortarea "Spread"

    O(n)

    O(nxk/log(n))

    O(nx(k - log(n)).5)

    O(n)

    Nu

    Tabloul de mai jos descrie cativa algoritmi de sortare care sunt neutilizati in timp real, deoarece au un grad de performanta scazut, sau sunt influentati de conditiile de functionare a echipamentelor hardware:

    Numele sortarii

    Comportare eficientaBest

    Comportare medie

    Comporatare ineficienta

    Nr. acese la memorie

    Stabilitate

    Comparatii

    Alte observatii

    Sortarea "Bogosort"

    O(n)

    O(nxn!)

    Infinit

    O(1)

    Nu

    Da

    Implementarea Knuth este eficienta.

    Sortarea "Bozo"

    O(n)

    O(nxn!)

    Infinit

    O(1)

    Nu

    Da

    --

    Sortarea "Stooge"

    O(n2.71)

    O(n2.71)

    O(n2.71)

    O(1)

    Nu

    Da

    --

    Sortarea "Bead"

    O(n)

    O(n)

    O(n)

    --

    Da/Nu

    Nu

    Necesita hardware special.

    Sortarea "Pancake"

    O(n)

    O(n)

    O(n)

    --

    Nu

    Da

    Necesita hardware special.

    Sortarea retelelor

    O(log n)

    O(log n)

    O(log n)

    --

    Da

    Da

    La 0 necesita un circuit adecvat O(nlog n)


    4.Descrierea celor mai utilizati algoritmi de sortare. >>>

    Sortarea prin interschimbare (bubble sort). [Sunt curios...]
    Acest algoritm de sortare functioneaza pe o metoda directa si simpla de sortare a datelor care sunt utilizate in domeniul calculatoarelor.Algoritmulincepe procedeul de sortarea prin aranjarea termenilor din tabloul ce trebuie sortat.Astfel ca se va compara primi doi termnei, iar daca s-a constatat ca valoarea numarica a primului termen este mai mare ca valoarea numarica a celui de-al doilea termen va avea loc o interschimbare de pozitii: primul termen va trece pe pozitia pe care se afla al doilea termen in cadrul tasbloului ce trebuie sortat.Se procedeaza asa si cu restul perechilor de numere din tablou, pana nu mai este nici o pereche de numere comparata.Acum algoritmul reia de la inceput compararea perechilor de numere din tabloul si se tot repeta astfel pana cand nu mai exista nici o neconcordanta intre valorile termenilor din tablou nedescoperita la ultima trecere (comparare).Desii simplu, acest algoritm de sortare se comporta eficient si usor de implementat, si se folosete in mod fregvent in educatie.O varianta de algoritm putin maibun decat sortarea prin interschimbare este algoritmul de sortare numit "coktail sort", care functioneaza pe metoda de a inversa criteriul de ordine al termenilor si efectuarea sortarii prin treceri alternative.Daca "bubble-ul" se utilizeaza la sortarea unui numar mic de termeni (de exemplu 20) el se comporta mult mai eficient in comparatie cu algoritmul de sortare cel mai rapid "quick sort".

    Sortarea prin insertie (insertion sort). [Sunt curios...]
    Acest tip de algoritm simplu de sortare si se comporta eficient in lucrul cu tablouri de date de dimensiuni mici sau in cadrul tablourilor sortate partial, el fiind adesea intalnit ca facand parte din alti algoritmi de sortare mai sofisticati.El procedeaza prin aducerea termenilor (elementelor) din tabloul unul cate unul si inserarea lor in pozitia corecta intr-un nou tablou.Sortare prin insertie lucreaza - dealtfel dupa cum este si denumita - inseeraza fiecare element sortat din tabloul de intrare (initial) intr-un tablou iesire (rezultat) la locul potrivit.Simplitatea algoritmului consta prin necesitatea de a avea doar doua tablouri structurate: tabloul de intrare (nesortat) si tabloul de iesire in care termenii care se sorteaza sunt inserati.Pentru a prevenii un numar prea mare de accese la memorie, cele mai multe implementari folosesc metoda sortarii interioare ("pe loc") care functioneaza prin mutarea termenului curent i partea termenilor sortati si segventa se tot repeta pana cand termenului i s-a gasit valoarea de loc.Sortarea numita "shell sort" este o varianta a sortarii prin insertie, insa se comporta eficient si-n cazul sortarii unor tablouri mari de date.Sortarea prin insertie ese mult mai eficienta decat sortare prin interschimbare (bubble sort), desii trebuie sa se tine cont de anumite proprietati.

    Sortarea prin insertie cu pas variabil (shell sort). [Sunt curios...]
    Acest algoritm de sortare a fost implementat prima oara ,fiind si denumta astfel, de catre Donald Shell in 1959.Algoritmul este inspirat din principiul de sortare al algoritmului de sortare prin interschimbare ("bubble sort") si din algoritmul de sortare prin insertie.Principul de sortare al algoritmului de sortare shell consta in schimbarea pozitiei a mai multor termeni din tablou si nu doar schimbarea a unei pozitii al un aunit timp.O implementare al acestui tip de algoritm poate fi descrisa prin aranjarea segventelor de date intr-un tablou bidimensional, si apoi sortarea coloanelor tabloului folosind sortarea prin insertie, metoda sortarii prin insertie este integrata ca fiind parte din acest algortm.Algoritmul de sortare Shell se comporta ineficient in cazul in care el trebuie sa sorteze baze de date de mari dimensiuni, insa acest algoritm se poate aprecia ca unul dintre cei mai rapizi in cazul in care lucreaza cu baze mici de date (acestea avand un numar mai maic decat 1000 de termeni).Un alt avantaj al algoritmului este faptul ca necesita, relativ, parti mici de memorie.

    Sortarea prin interclasare (merge sort). [Sunt curios...]
    Aceasta metoda (algoritm) de sortare usureaza procedeul de inlocuire a tablourilor deja sortate si care trebuiesc resortate si puse intr-un nou tablou.Algoritmul incepe prin a compara fiecare pereche de cate doua elemente (adica 1 cu 2, si 3 cu 4) si inlocuirea lor daca primul element ar trebui sa soseasca, in urma metodei (trecerii) de sortare, dupa primul element din aceeasi pereche.Astfel se vor interschimba fiecare element (termen) situate in tablourile sortate initial, rezultand tablouri de cate doua elemente, apoi patru elemente etc,ca apoi sa se inceapa o noua interclasare pentru numarul maxim de tablouri sortate rezultate, pana cand si ultimele doua tablouri sunt sortate ca apoi sa rezulte numai un singur tablou sortat.dintre algoritmii de sortare prezentati pana acum, acest tip de algoritm este singurul care se poate comporta eficient in lucrul cu baze de date de dimensiuni mari.

    Sortarea cu ansamble (heap sort). [Sunt curios...]
    Algoritmul "heapsort" face parte din familia algoritmilor care abordeaza sortarea prin selectie.Aceasta familie de algoritmi functioneaza prin a determina ceam mai mare sau cea mai mica valoare a termenului prezent in tabloul care trebuie sortat plasandu-l la inceputul sau sfarsitul tabloului in functie de marimea numarica a valorii a termenului, astfel continuand si cu ceilalti termeni din tablou.Algoritmul poate executa treceri de sortare intr-un interval de timp O(n2), acesta realizand task-uri eficiente printr-o structura de date abstracta numita arbore binar care are valoarea parintelui mai mare decat valorile fiilor.Abordand structura arborelui binar in cadrul tabloului catre a fost sortat ar rezulta ca nodul radacina al arborelui binar detin termenul din tablou cu cea mai mare valoare.Daca in timpul procesului de sortare cest termen (element) care detine cea mai mare valoare din tabloul sortat (ordonat) a fost comparata cu valoarea si mai mare al altui termen din tablou, el va fi pus in tablou la locul potrivit in timp ce elementul cu termenul cu cea mai mare va fi pus la sfarsitul tabloului, obtinand astfel o sortare corecta.Algoritmul efectueaza in timp un numar de O(n logn) treceri.

    Sortarea rapida (quick sort). [Sunt curios...]
    Este un algoritm de tip instabil care realizeaa operatii de segmentarea datelor.Prin segmentarea unui tablou se intelege alegerea unui element (termen) numit pivot cu care v-om compara toate elementele tabloului pentru ca toate elementele care au valoari mai mici decat pivotul se vor pozitiona inaintea lui obtinand astfel un segment (sub-tablou) din tabloul initial iar toate elementele care au valori mai mai mari decat pivotul v-or trece dupa acesta obtinandu-se un nou sub-tablou (segment).Acest mecanism de sortare se petrece intr-un timp scurt, deoareace algoritmul nu se foloseste alte structuri de date exterioare in care pozitioneaza rezultatele sortarii,el lucrand astfel in cadrul tabloului initial (original).Algoritmii care functioneaza dupa acest principu se numest algoritmi care functioneaza "pe loc".Dupa ce tabloul initial a fost sectionat in functie de valoarea pivotului rezultand un numar oarecare de sub-tablouri, aceste sub-tablouri se vor sorta recursiv pentru a determina cel mai mare sau cel mai mic subtablou.Eficienta implementarilor in sortarea rapida (cu elegerea pivotului "pe loc") este tipica sortarilor instabile, si care se aseamana cu eficienta algoritmulor cu metode complexe de sortare, insa se numara printre cei mai eficienti algoritmi de sortare utilizati.sortarea rapida foloseste si un modest spatiu de O(n logn) locatii de memorie, particularitate care-l face sa fie printre cei mai utilizati algoritmi de sortare.Cea mai complexa problema in cadrul algoritmului de sortare rapida o reprezinta alagerea corecte a pivotului, caci corespunzator alegerii corecte a pivotului algoritmul se comporta eficient, insa ineficienta algoritmul consta uneori in alegrea necorespunzatoare a pivotului (medianei) rezultand o performanta scazuta (O(n2)).Insa daca la fiecare pas de sortare se va alege un pivot corect, atunci algoritmul va functiona dupa functia O(n log n).

    Sortarea prin selectie.[Sunt curios...]
    Sortarea prin selectie este un algoritm de sortare, si a carui principiu de functionare este specific algoritmilor de sortare prin comparare care se fac "pe loc".Acest tip de sortare are complexitatea ?(n2), si se comporta eficient daca lucreaza cu liste mari de date, iar in cazul in care se comporta ineficient algoritmul are o rapiditate de sortare asemanatoare cu rapiditatea algoritmului de sortare ineficienta al metodei de sortare prin insertie.Sortarea prin selectie este preferata in practica deoarece reprezinta un algoritm simplu, avand si alte avantaje performante rezultand astfel ca sortarea prin selectie se situeaza deasupra altor algoritmi complicati de sortare chiar daca se sorteaza structuri de date de aceeasi complexitate..

    5.Accesul algoritmilor la memorie. >>>

    Daca dimensiunea unui tablou care se doreste sa fie sortat se apropie sau depaseste dimensiunea memoriei interne, trebuie sa se asigure memorarea tdatelor tabloului in spatii de memorie suplimentara aflata pe un alt suport de memorie (discul fix sau memorie swap), deoarece performanta algoritmul care face sortarea devine foarte inficienta daca tablou memorat in meoria calculatorului este greu accesibil.Folosiera memoriei de catre algoritmii de sortare reprezinta un criteriu de clasificare important, insa pentru un algoritm necesita prea multe accese la memorie nu mai este (relativ) important numarul de treceri realizate in timp pentru a aranja elementele din tabloul care trebuie sortat cat conteaza numarul de accese la memorie.Astfel dar, in cadrul acestor algoritmi numarul comparatiilor dintre termenii tabloului aflati in memoria calculatorului este mul mai semnificativa decat numarul de treceri pentru aranjarea lor, deoarece comparatiile termenilor memorati in locatii succesive in memoria interna se realizeaza mult mai rapid deoarece se executa la viteza a magistralei de sistem sau a microprocesorului care sunt net superioare comparativ cu situatiile in care datele care trebuiesc accesate pentru a fi comparate sunt memorate pe discul fix sau pe un alt suport extern de memorie.
    De exemplu, algoritmul de sortare recursiva "quick sort" furnizeaza comportare eficienta avand datele memorate intr-o memorie RAM (Random Access Memory) adecvata, insa numai prin metoda recursivitatii el poate segmenta tabloul ce trebuie sortat in functie de pivot.Performanta lui renumit de rapida ar scadea drastic in cazul in care ar trebui sa efectueze o sortare in care datele ce trebuiesc sortate trebuiesc memorate intr-o alta memorie decat memoria interna (RAM), deoarece ar putea cauza un numar redus de operatii de copiere sau operatii de interschimbare din si pe discul fix.In acest caz un alt algoritm ar putea fi mult mai eficient, deoarece este implementat sa camumice cu meoria , chair daca necesita un numar mare de accese.O alta metoda de a gasii solutii la accesul algoritmilor de sortare la memorie sa se desfasoare eficient sunt inregistrarile complexe de date (asemenatoare cu bazele de date relationale) deoarece ele folosestc metode de osrtare pentru un numar mic de elemente, sau crearea unui index in interiorul tabloului ce trebuie sortat.O versiune de sortare pentru tablouri este crearea unui pivot (reper) care la fiecare trecere de sortare va fi cumparat cu celelalte elementele ale tabloului, deoarece pivotul este mult mai mic in comparatie cu dimensiunea intregului tablou,algoritmul trebuind sa memoreze numai valoarea pivotului in memorie nu si dimensiunea intregului tabloului intr-o memorie insuficienta, astfel fiind necesar memorarea datelor nememorate din tablou pe un alt suport de memorie procedura numita "sortare tangentiala".
    Alta tehnica pentru prevenirea memorarii datelor in afara memoriei interne este combinarea a doi algoritmi intr-unul singur unuind astfel avantajele lor pentru a realiza performante in comun.De exemplu sunt algoritmi care segmenteaza tablourile ce trebuiesc sortate in sub-tablouri (segmente) de dimensiuni reduse care pot fi memorate usor in memoria interna.Sub-tablourile rezultate se pot si ele sorta si segmenta folosind algoritmi care abordeaza o astfel de motoda, cum sunt de exemplu algoritmul de sortare rapida "quick sort" sau "heap sort".
    Tehnicile de sortare pot fi combinate.Pentru memorarea unor date mari care depasesc dimensiunea memoriei interne ca trebui sortat si pivotul cu ajutorul unor algoritmi, sau combinatie de algoritmi, care realizeaza performante in comincare cu memoria deoarece rapiditatea unui algoritm consta in cat mai putine accese la memorie.

    6.Implementarea algoritmilor de sortare in software. >>>

    Cele mai multe limbaje de programare si-au implementat propriul algoritm de sortare.Aceste limbaje folosesc tipic numai un singur algoritm care este imbunatatit si implementat in sintaxa specifica fiecarui limbaj de programare, si se comporta eficient in lucrul cu memoria.Cel mai folosit este sortarea rapida ("quick sort"), iar din punct de vedere al utlizarii este urmat de algoritmul de sortare "heap sort" si e algoritmul de sortare prin interclasare ("merge sort").

    Iata cateva exemple de componente software care folosesc algoritmii de sortare:

    Limbajul C.
    Include qsort(),care este o functi de librarie standard care realizeaza o sortare prin comparatii utilizand un operator de comparare care este folosit ca pointer in cadrul acestei functii.Aceasta implementare se comporta eficient, desii nu este prea folosita, ea bazandu-se pe principiul algoritmului de sortare rapida.(REF ISO/MEC 9899:1999(E), sectiunea 7.20.5.2, sau ANSI/ISO 9899:1990 sectinea 7.10.5.2)

    Limbajul C++.
    Foloseste functia qsort()insa adusa ca o demostratie pentru functia STL std :: sort, care sorteaza rangurile dintre doua iteratii cu acces aleatoriu.In plus, clasa std :: list (liste inlantuite), care nu utilizeaza accese alatorii este in metoda sort.tipul elementelor sortate trebuie sa accepte operatorul de comparare, in caz contrar va fi necesar un operator de comparare adecvat.In plus este usor sa se foloseasca principuil compararii cu operator de comparare, el adesea performand cu metoda qsort(), functie prezenta in limbajul C.Limbajul C++ fooseste si metodele stable_sort si partial_sort.(REF sectiunile 25.3 si 25.4 din ISO/IEC 14882:2003(E) si 14882:1998(E)).

    Limbajul Java.
    Clasele utilizate in acest limbaj sunt numiteArrays si Collections (ambele valabile in versiunea 1.2 car si in versiunile urmatoare) include functia sort, care prezinta metode statice grupate lucrul cu structuri de date de tip tablou si liste.Este necesar ca tablourile sa fie tablouri de primitive, fiind preferabila situatia in care si tablourile si listele cu care se lucreaza trebuie sa apartina metodelor care implementeaza interfata comparable, sau trebuie declarat un indice Comparator adecvat.

    Utilitarul Microsoft .NET Framework.
    Aceasta componenta software ofera metoda statica Array.sort() care poate sorta un tablou de obiecte folosind un indiciu (reper) de comprare arbitrara.Desii nu este aceasta metoda nu este raspandita, este eficienta in cadrul principiului de functionare deoarece este inspirata din algoritmii de sortare de tip rapid ("quick sort").In plus se mai oferasi metoda sort(), aflata in cadrul clasei ArrayList care si ea foloseste principul metodei de sortare rapida ("quick sort").O alta metoda cu capacitati de sortare este genericul List.

    Utilitarul Perl.
    Ofera o functiesort, care este o functie-operator ca returneaza valori de tip intreg.In versiunea Perl 5.6 se foloseste o metoda de sortare rapida ("quick sort"), insa in versiunile de dupa 5.6 se mai foloseste si metoda de sortare prin interclasare ("merge sort") ca procedeu de sortare secundar.Un prim motiv pentru care se abordeaza metode de sortare prin interclasare este securitatea aplicatiilor, deoarece Perl este o unealta software cu care se pot construi aplicatii web.

    Python
    El ofera doua functii de sortare.Una este denumita functia sorted care functioneaza dupa principiul metodelor de sortari albitrare, si cea de-a doua functie este denumita sorted si functioneaza ca o metode de sortare "pe loc" pentru sortarea elementelor din tablouri.

    Standard M.
    Nu are implementate metode proprii de sortare, utilizand pentru metodele de sortare libraria SML/NJ care face parte din libraria Standard ML of New Jersey.Aceasta librarie mai ofera si functia QsortFn, cu ajutorul careia se pot sorta elementele unui tabloul de date prin algoritmul de sortare rapida ("quick sort").

    Haskell.
    Ofera o functie de sortare, care este dedicata in special pentru sortarea listelor (nu si a tablourilor).Aceasta caracteristica este specificata in termenii sortarii prin insertie, insa numai implementarile sortarilor stabile sunt permise.

    OCaml.Ofera trei tipuri de functii de sortare care se pot aplica atata tablourilor cat si listelor.Aceste functii sunt denumite sort, stable-sort si fast-sort care in comparatie cu primele doua este foarte se comporta foarte rapid.In fiecare versiune OCaml este folosita o metoda de sortare sort diferita.

    Common Lisp.
    Common Lisp defineste in sectiunea 17.3 doua functii de sortare denumite SORT si STABLE-SORT, insa sunt nefolosite deoarece incalca principiile programarii structurate prin functii de salt.Poate permite in limbaj specific Lisp orice metode de sortare.


Structuri de date abstracte | SDA Arbori | SDA Arbori Binari | SDA Arbori Multicai | SDA Arbori Optimi | SDA Graf | Traversarea grafurilor | SDA Graf Ponderat | SDA Graf Orientat | SDA Lista Inlantuita | SDA Tablou Asociat | Despre algoritmi. | Algoritmi de cautare neinformata, cautarea inforamata,cautarea in liste,in grafuri, in SQL-uri | Algoritmi de cautare liniara, binara, interpolare | Prezentare Algoritmi Sortare | Sortare Insertie cu Pas Variabil (Shellsort) | Sortarea Prin Ansamble (Heapsort) | Sortarea Prin Insertie (Insertionsort) | Sortarea Prin Interclasare (Mergesort) | Sortarea Prin Interschimbare (Bubblesort) | Sortarea Prin Selectie (Selectionsort) | Sortarea Rapida (Quicksort)


Inapoi la pagina principala



©2006-2007 frankeman Software - Timisoara. Toate drepturile sunt rezervate.