Descarca - WordPress.com
Download
Report
Transcript Descarca - WordPress.com
ALGORITMI PENTRU SORTAREA
UNUI VECTOR
METODA SELECTIEI DIRECTE
CONTINUT
ALGORITMI DE SORTARE
METODA SELECTIEI DIRECTE
Caracteristici
Pasii algoritmului
Exemplu
Implementare
ALGORITMI DE SORTARE
Algoritmii de sortare rearanjeaza elementele vectorului astfel incat intre
valorile lor sa existe o relatie de ordine (ordonare crescatoare sa
descrescatoare).
Sortarea unui vector se poate realiza utilizand mai multe metode de
sortare. Exemple: - metoda selectiei directe
- metoda bulelor
- metoda inserarii directe
- interclasarea
Algoritmii sunt prezentati pentru ordonarea crescatoare a vectorului.
Pentru ordonare descrescatoare se va nega expresia folosita pentru
comparare.
METODA SELECTIEI DIRECTE
Metoda consta in aducerea pe prima pozitie a elementului cu valoarea cea
mai mica din cele n elemente ale vectorului, apoi aducerea pe pozitia a doua
a elementului cu valoarea cea mai mica din cele n-1 elemente, reluandu-se
procesul pentru elementele ramase.
Variabile utilizate:
v – vectorul care se prelucreaza
n – lungimea logica a vectorului
i, j – variabile contor
aux – variabila auxiliara pentru interschimbarea elementelor
PASII ALGORITMULUI
Pas 1. Se initializeaza pozitia pe care se aduce minimul (i=0)
Pas 2. Se aduce pe pozitia i a vectorului elementul cu valoarea minima din cele n-i-1 elemente
astfel:
Pas 2.1. Se initializeaza pozitia primului element cu care se compara (j=i+1)
Pas 2.2. Se compara elementul v[i] cu v[j]. Daca v[j]<v[i] cele doua elemente se
interschimba: aux=v[i]; v[i]=v[j]; v[j]=aux;
Pas 2.3. Se trece la urmatorul element pentru comparare (j=j+1)
Pas 2.4. Se compara j cu numarul de elemente in care se cauta minimul pentru a se
vedea daca s-a terminat cautarea minimului. Daca j<n atunci se revine la Pas 2.2.
Pas 3.Se trece la urmatoarea pozitie din vector (i=i+1) pentru a duce pe aceasta pozitie minimul
din cele n-i-1 elemente.
Pas 4. Se compara I cu numarul de pozitii ale vectorului in care trebuie aduse valorile minime .
Daca i<n-1 atunci se revine la Pas 2.
Pas 5. Vectorul este sortat crescator.
EXEMPLU
Fie un vector care contine numerele 4,3,2,1:
i=0
i=1
i=2
4
1
1
3
2
1
j=1
4
3
2
1
j=2
3
4
2
1
j=3
2
4
3
1
4
1
2
j=2
1
4
3
2
j=3
1
3
4
2
2
j=3
i=3
3
2
4
1
3
2
3
4
4
3
IMPLEMENTARE
Secventa de instructiuni pentru algoritmul de sortare prin metoda selectiei directe este:
int i, j, n, aux, v [50];
cout << "n=" ; cin >> n;
for (i=0; i<n; i++)
{ cout << “v [ “ << i << “ ] = “ ;
cin >> v [i] ; }
for ( i = 0 ; i < n–1 ; i ++ )
for ( j = i + 1 ; j < n ; j ++ )
if ( v [j] < v[i] )
{ aux = v[i];
v[i] = v[j]; v[j] = aux; }
cout << “ Sirul sortat este: “ << endl;
for ( i = 0; i < n; i ++ )
cout << v[i] << “ “ ;
FISA DE LUCRU
Scrieti programul care ordoneaza crescator un vector v cu maximum 50
elemente intregi.
Modificati programul astfel incat sa ordoneze elementele vectorulu
descrescator.
Probleme suplimentare:
Scrieti un program care citeste de la tastatura un vector cu numere intregi si
un numar intreg k (k<n). Programul va ordona elementele v[0]…v[k] din
vector in ordine crescatoare si elementele v[k+1]..v[n-1] in ordine
descrescatoare.
Sa se memoreze intr-un vector cifrele unui numar si sa se afiseze cel mai
mic numar care se poate obtine cu cifrele memorate.
www.designfreebies.org