Cod sursa(job #3124526)

Utilizator mariusn01Marius Nicoli mariusn01 Data 29 aprilie 2023 11:32:42
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
/**
Sortare prin selectie.
Intai aflu efectiv maximul si il interschimb cu elementul de pe ultima pozitie.
Apoi aflu maximul din primele n-1 si in interschimb efectiv cu penultimul
si tot asa.

Practic se face cam la fel ca la comparate, insa modul in care ducem maximul
la final e altul.

Numarul de comparari se duce la n*(n-1)/2 insa special este ca numarul de
interschimbari este maxim n-1.

Complexitate n^2

**/
#include <fstream>

using namespace std;
int v[500001];
int n, i, j, sortat, maxim, p;
int main () {
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");

    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i];

    for (i=n;i>=2;i--) {
        /// aflu maximul dintre primele i si il duc pe pozitia i

        maxim = v[1];
        p = 1;
        for (j=2;j<=i;j++)
            if (v[j] > maxim) {
                maxim = v[j];
                p = j;
            }
        swap(v[i], v[p]);
    }


    for (i=1;i<=n;i++)
        fout<<v[i]<<" ";


    return 0;
}