Sortare directă sau sortarea prin selecție caută cel mai mic/mare element din vector și așează mereu pe poziția minimă din vector. Astfel se face doar o inter schimbare în vector pentru n-a comparații.
În programul de mai jos se sortează crescător un vector ale cărui elemente sunt citite de la tastatură:
/*Selection sort*/
#include <iostream>
using namespace std;
int main()
{
int v[100],n;
cout << "Dati nr de elemente "; cin >> n;
//citire vector
for(int i=0; i<n; i++){
cout << "v[" << i << "]=";cin >> v[i];
}
//afisare vector
for(int i=0; i<n; i++){
cout << v[i] <<" ";
}
cout << endl;
//sortare directa
for(int i=0; i<n-1; i++)
{
int minPoz = i;
int min = v[i];
for(int j = i+1; j < n; j++)//selectam minimul
{
if(min > v[j])
{
minPoz = j;
min = v[j];
}
}
int aux = v[i];
v[i] = v[minPoz];
v[minPoz] = aux;
}
//afisare vector
for(int i=0; i<n; i++){
cout << v[i] <<" ";
}
return 0;
}
Pentru 5 valori 5,41,9,874,23 avem la ieșire:
Dati nr de elemente 5
v[0]=5
v[1]=41
v[2]=9
v[3]=874
v[4]=23
5 41 9 874 23
5 9 23 41 874
Process returned 0 (0x0) execution time : 23.235 s
Press any key to continue.
Temă:
- Să se modifice programul de mai sus astfel încât să afișeze și sortarea descrescătoare:
2. Să se modifice programul de mai sus astfel încât să afișeze rezultatul într-un fișier.
