Sunteți pe pagina 1din 8

ALGORITMI DE

SORTARE
■ Sortarea este o operatie fundamentala in informatica.
■ Putem sorta datele pentru prezentarea catre utilizator (de
exemplu in agenda telefonica, sau atunci cand navigam
printre foldere, sau selectam o anumita melodie din
telefon)
■ Sortarea este o piatra fundamentala in algoritmii mai mari,
pentru ca simplifica anumite cerinte (precum gasirea unei
chei unice, sau detectarea elementelor duplicate)
Bubble Sort do
{
Ideea de baza a sortarii prin schimbat=0;
metoda bulelor este in a
parcurge tabloul de la stanga for (i=0; i<n-1; i++)
spre dreapta, fiind comparate if( a[i] < a[i+1])
elementele alaturate a[ i ] si
a[i+1]. Daca vor fi gasite 2 {
elemente neordonate valorile
lor vor fi interschimbate. aux=a[i];
Parcurgerea tabloului de la a[i]=a[i+1];
stinga spre dreapta se va
repeta atat timp cat nu vor fi a[i+1]=aux;
intalnite elemente neordonate. schimbat=1;
}
} while (shimbat)
Selection Sort int i,aux,min,minat;
for(i = 0; i < n - 1;i++)
{
Acest algoritm selecteaza la minat = i;
fiecare pasul i cel mai mic min = a[i];
element din vectorul de la for(j = i + 1;j < n;j++) //selectam minimul
pasul i+1 pana la n.Valoarea //din vectorul ramas( de la i+1 la n)
minima de la pasul i este pusa {
in vector la pozitia i, facanduse if(min > a[j]) //sortare crescatoare
intereschimbarea cu pozitia {
actuala a minimului. Nu este minat = j; //pozitia elementului minim
un algoritm indicat pentru min = a[j];
vectorii mari, in majoritatea }
cazurilor oferind rezultate mai }
slabe decat insertion sort si aux = a[i] ;
bubble sort a[i] = a[minat]; //interschimbare
a[minat] = aux;
}
Insertion Sort
Spre deosebire de alti algoritmi de
sortare, sortarea prin insertie este
folosita destul de des pentru sortarea
tablourilor cu numar mic de elemente. int i, j, aux;
De exemplu, poate fi folosit pentru a for (i = 1; i < n; i++)
imbunatati rutina de sortare rapida.
{
Sortarea prin insertie seamana
oarecum cu sortarea prin selectie. j = i;
Tabloul este impartit imaginar in doua while (j > 0 && a[j - 1] > a[j])
parti - o parte sortata si o parte {
nesortata. La inceput, partea sortata
aux = a[j];
contine primul element al tabloului si
partea nesortata contine restul a[j] = a[j - 1];
tabloului. La fiecare pas, algoritmul ia a[j--] = aux;
primul element din partea nesortata si }
il insereaza in locul potrivit al partii
}
sortate.
Cand partea nesortata nu mai are nici
un element, algoritmul se opreste
#include<iostream.h>

Quik Sort int x[100], n;


void schimb(int &a, int &b) {int aux=a; b=aux;}
void divizeaza(int s, int d, int &m)
{int I=s, j=d, pi=0, pj=1;
Primul element din vector, //pivotul fiind pe pozitia s, parcurgerea incepe cu
indicele j
numit pivot, este mutat în
while(I<j)
cadrul vectorului pe poziţia {if (x[i], x[j]); schimb(pi,pj);}
pe care trebuie să se i=i+pi; j=j-pj;}
găsească în vectorul sortat. m=i;}
void QuikSort(int s, int d)
Toate elementele mai mici {int m;
decât el vor fi mutate în if (s<d) {divizeaza(s,d,m);
vector în faţa sa. Toate QuikSort (s,m/1);
elementele mai amri decât QuikSort (m+1,d);}}
void QuikSort()
el vor fi mutate în vector {int I; cout<<”n= ”;cin >>n;
după el. for (i=1;i<=n;i++) {cout<<”x[”<<I<<”]= ”;cin>>x[i];}
QuikSort (1,n);
cout<<”vectorul sortat”<< endl; for (i=1;i<=n;i++)
cout<<x[i]<<” ”;}
Bibliografie
■ http://www.cs.ubbcluj.ro/~vcioban/InformaticaDid
actica/AlgoritmiSortare.pdf
■ http://www.worldit.info/files/Studiu%20asupra%2
0algoritmilor%20de%20sortare.pdf
SFARSIT

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