Sunteți pe pagina 1din 1

Algoritmul este recursiv şi se foloseste metoda de programare Divide et Impera.

Vectorul va fi ordonat astfel:


la fiecare pas se transferă un element exact pe poziţia prin care se respectă
ordinea crescătoare a elementelor astfel încât toate elementele din faţa lui vor fi
mai mici decât el şi toate elementele de după el vor fi mai mari
folosind aceeaşi tehnică se sortează elementele din faţa elementului tranferat şi
toate elementele de după elementul transferat
EXEMPLU
Fie vectorul A=(10,20,1,6,4).
Pas 1: Se apelează funcţia QuickSort(0,4).
Funcţia pivot va modifica vectorul a astfel:
i=0 j=4 mod=1 a=(10 20 1 6 4)
i=1 j=4 mod=2 a=( 4 20 1 6 10)
i=1 j=3 mod=1 a=( 4 10 1 6 20)
i=2 j=3 mod=2 a=( 4 6 1 10 20)
i=3 j=3 mod=2 a=( 4 1 6 10 20)
Pas 2: Folosind aceeaşi metoda se va ordona secvenţa
(a[0], a[1], a[2]) si (a[3])
ALGORITM

int a[dimmax1];
int Pivot(int st, int dr)
{
int i=st, j=dr, aux, mod=1;
// daca mod=1 atunci j-- altfel i++
while (i<j)
{
if (a[i]>a[j])
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
mod=3-mod;
} // se schimba modul de lucru
if (mod==1) j--;
else i++;
}
return i;
}

S-ar putea să vă placă și