M4 L2 info Selection sort

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ă:

  1. 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.