sâmbătă, 13 ianuarie 2018

Algoritmul de sortare "Selection Sort"

Algoritmul de "Sortare prin selectie" este un algoritm pentru sortarea in ordine crescatoare sau descrescatoare a unei colectii de obiecte. In exemplul de mai jos am folosit un vector de numere intregi.
Algoritmul consta in parcurgerea repetata a vectorului pe secvente din ce in ce mai mici si aducerea pe prima pozitie a secventei parcurse a minimului din aceasta secventa. La prima parcurgere se aduce pe prima pozitie a vectorului minimul dintre toate numerele, la a doua parcurgere (de la al doilea element pana la ultimul) se aduce pe a doua pozitie minimul dintre numerele de la pozitia a doua pana la ultimul. A treia parcurgere se face de la al treilea element pana la ultimul si minimul se aduce pe pozitia a treia s.a.m.d. Ultima parcurgere va compara doar ultimele doua elemente ale vectorului.

void SelectSort(int v[], int n)
{
    for (int i = 0; i < n-1; i++)
    {
        int minim = v[i];
        int indmin = i;

        for (int j = i+1; j < n; j++)
        {
            if (v[j] < minim)
            {
                indmin = j;
                minim = v[j];
            }
        }

        if (indmin != i)
        {
            int temp = v[i];
            v[i] = v[indmin];
            v[indmin] = temp;
        }
    }
}

Niciun comentariu: