Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Sortare  (Citit de 10443 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
ILDottore
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 13



Vezi Profilul
« : Ianuarie 31, 2011, 17:28:30 »

Care este cel mai bun algoritm de sortare ? Quicksort,bubble sort etc..?
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #1 : Ianuarie 31, 2011, 17:48:23 »

Cel mai usor si unul dintre cele mai eficiente este sortul din STL. Mai sunt radixsort, countingsort, mai multe detalii http://infoarena.ro/problema/algsort.
« Ultima modificare: Februarie 04, 2011, 21:24:25 de către Simoiu Robert » Memorat
ILDottore
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 13



Vezi Profilul
« Răspunde #2 : Ianuarie 31, 2011, 17:54:53 »

Multumesc pentru raspunsul prompt Smile
Memorat
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #3 : Ianuarie 31, 2011, 18:22:51 »

Un algoritm destul de bun pentru sortare e quicksort-ul aleator. Uite aici o sursa: http://infoarena.ro/job_detail/450035?action=view-source

Gasesti in cormen explicatii
Memorat
scipianus
Nu mai tace
*****

Karma: 129
Deconectat Deconectat

Mesaje: 345



Vezi Profilul
« Răspunde #4 : Ianuarie 31, 2011, 19:31:50 »

Citat
In libraria standard a limbajului C este implementata o varianta naiva de Quicksort (poate fi apelata prin qsort(...) - o sursa demonstrativa gasiti aici), iar STL-ul ofera programatorilor C++ atat functia sort, o implementare a algoritmului Introsort (o sursa demonstrativa aici), cat si functiile make_heap si sort_heap, pentru a putea implementa usor Heapsort (sursa demonstrativa aici). De asemenea, o varianta scurta de implementare a algoritmului Merge Sort (inspirata din acest articol) puteti gasi aici.

Eu pana acum foloseam ca metoda de sortare functia sort din STL pentru orice tip de sortare de genul sort(a,a+n,Ordonare()),unde la functia Ordonare fac ordonare dupa ce criterii doresc.
Din ce scrie sus aflu deci ca mai exista qsort si cele 2 functii pentru heapsort.Pana la urma care dintre sort,qsort si heapsort prin STL,este mai rapida ?  Smile
Memorat
nparfene2004
Client obisnuit
**

Karma: 22
Deconectat Deconectat

Mesaje: 81



Vezi Profilul
« Răspunde #5 : Ianuarie 31, 2011, 22:08:21 »

Din cate stiu eu, dintre sortarile bazate pe comparatii:
locul 1 : RadixSort
locul 2 : Heap-sort - O(n log n) pe toate cazurile
locul 3 : QuickSort (sau poate Shell Sort ??)
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #6 : Ianuarie 31, 2011, 22:39:45 »

Aici sunt prezentati timpii pentru fiecare algoritm in parte Wink.
Memorat
robert.badea
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 16



Vezi Profilul
« Răspunde #7 : Februarie 04, 2011, 19:42:55 »

Îmi spune și mie de ce toată lumea crede că QuickSort este un algoritm foarte rapid? Doar după nume? Are worst case n2 și best n log n ceea ce mie mi se pare incredibil de mult.

PS: Nu zic de voi, dar cer* o explicație, poate am înțeles eu greșit.
« Ultima modificare: Februarie 04, 2011, 21:10:18 de către Robert Badea » Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #8 : Februarie 04, 2011, 20:46:49 »

E important la quicksort ca are complexitatea timp medie O(NlogN), constanta mica, memorie suplimentara doar O(log(N)) si e simplu de implementat. Smile Iar la varianta cu pivotul random, nu se poate construi a priori un test pe care complexitatea timp sa fie O(N^2), desi posibilitatea ca algoritmul sa ruleze in aceasta complexitate exista.
Memorat

Am zis Mr. Green
robert.badea
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 16



Vezi Profilul
« Răspunde #9 : Februarie 04, 2011, 21:17:49 »

Ar fi o posibilitate și mai mică (aproape imposibilă) dacă înainte de quickSort s-ar amesteca elementele din vector, cred, dar asta 99,99% distruge best-case-ul (dacă există).

De mergeSort cu listă înlănțuită ce părere ai(aveți)?

Și nu în ultimu rând, mă ajută și pe mine cineva cu radixSortul? La implementare, algoritmu de a sorta după cifra unităților, zecilor, etc poate fi care vreau eu?
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #10 : Februarie 05, 2011, 00:33:39 »

Mergesort cu lista inlantuita e util doar in cazul in care sortezi structuri mai complexe. Daca sortezi doar intregi, pointerii pe care ii tii la lista ocupa la fel de multa memorie ca un vector suplimentar. Din ce am testat eu cand eram in liceu, quicksort-ul randomizat merge putin mai bine ca mergesort-ul.

La RadixSort e eficient sa folosesti sortare prin numarare deoarece cifrele sunt pana in 10.
Memorat

Am zis Mr. Green
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #11 : Februarie 20, 2011, 01:33:10 »

@nparfene: Radix nu e sortare prin comparare pentru ca nu compara elementele vectorului intre ele.

@robert.badea: Lumea considera quicksort rapid pentru ca in practica s-a dovedit a fi foarte bun. Sunt sanse muuult mai mari sa castigi la loto decat sa mearga quicksort prost. Poti gasi pe net demonstratiile matematice.

Problema cu mergesort e ca are prea multa memorie suplimentara.
« Ultima modificare: Februarie 20, 2011, 01:40:27 de către Andrei Grigorean » Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines