Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: QuickSort request  (Citit de 4237 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
HexString
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« : Aprilie 08, 2008, 11:33:15 »

Poate sa imi dea si mie cineva, QuickSort-ul ? Neutral Aha
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #1 : Aprilie 08, 2008, 11:45:10 »

http://frankeman.sitesfree.com/licenta/sortarea_rapida.html

il ai aici explicat in romana, numai bun de inteles.
Memorat
HexString
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #2 : Aprilie 08, 2008, 11:52:52 »

Este cel mai eficient algoritm de sortare? Am inteles ca s-a dat anu trecut la OJI cls a7a sau ceva de genul ceva prob, unde era cva modificare pe quicksort care il facea mai eficient, ceva cu mijloc...Neutral , nu mai tin bine minte.
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #3 : Aprilie 08, 2008, 14:18:01 »

Este unul dintre cei mai eficienti algoritmi de sortare pe loc pe cazul mediu.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
HexString
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #4 : Aprilie 08, 2008, 17:11:28 »

Multumesc, am gasit ce am cautat, era vb de qs, doar ca isi lua pivotul de pe mijloc, nu de pe prima pozitie, si scapa de cateva parcurgeri.
Memorat
rEbyTer
Vorbaret
****

Karma: -85
Deconectat Deconectat

Mesaje: 154



Vezi Profilul
« Răspunde #5 : Aprilie 08, 2008, 17:36:32 »

Dacă funcţia înlocuieşte este definită inline atunci quicksortul este un pic mai performat ? (in cazul in care sunt multe elemente)
Cod:
void inlocuieste(int *a, int *b)
{

      int c = *a;
      *a = *b;
      *b = c;

}
Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #6 : Aprilie 08, 2008, 21:55:08 »

mai bine nu o faci functie separata. atunci sigur va fi mai rapid. nu stiu care e treaba cu 'inline'. pe unele evaluatoare mi-a mers mai repede, pe altele nu.  Eh?
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
amadaeus
Client obisnuit
**

Karma: 28
Deconectat Deconectat

Mesaje: 93



Vezi Profilul
« Răspunde #7 : Aprilie 23, 2008, 23:17:50 »

De obicei compilatoarele expandeaza inline functiile simple (de genul swap) in etapa de optimizare. De asta s-ar putea ca in unele cazuri sa nu faca diferenta daca specifici in mod explicit acest lucru. In general poti lasa compilatorul sa decida care functii vor fi expandate si care nu, se descurca destul de bine Tongue

Ca tot veni vorba de swap, ca sa schimbi valorile a doua int-uri poti scrie (in C)
Cod:
a^=b^=a^=b;
Incearca si vezi de ce functioneaza Wink (a^=b inseamna a = a xor b, iar expresia de mai sus este parsata de la dreapta spre stanga)

Memorat

"one of these days I'm going to cut you into little pieces..."
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #8 : Aprilie 24, 2008, 00:24:23 »

Puteti citi mai multe despre inline-uri aici.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
mordred
Client obisnuit
**

Karma: -39
Deconectat Deconectat

Mesaje: 51



Vezi Profilul
« Răspunde #9 : August 20, 2008, 14:38:22 »

am si eu o intrebare, poate putin off-topic: quicksortu' asta e mai putin performant? ca eu prefer varianta asta fata de cea de pe wikipedia

Cod:
void quicksort(int start, int end){
if(end-start<1) return;
int pivot = x[start], i = start, k = end;
while(k>i)
    {
    while(x[i]<=pivot && i<=end && k > i)
        ++i;
    while(x[k]>pivot && k>=start && k>=i)
        --k;
    if(k>i){
        aux = x[i];
        x[i] = x[k];
        x[k] = aux;
        }
    }
aux = x[start];
x[start] = x[k];
x[k] = aux;
quicksort(start,k-1);
quicksort(k+1,end);
}
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #10 : August 20, 2008, 16:13:58 »

In general e bine sa alegi pivotul random. In rest, implementarea ta seamana cu cea pe care o foloseam si eu.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
mordred
Client obisnuit
**

Karma: -39
Deconectat Deconectat

Mesaje: 51



Vezi Profilul
« Răspunde #11 : August 21, 2008, 23:02:51 »

am inteles, mersi  Thumb up
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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