Pagini recente » Cod sursa (job #1965810) | Cod sursa (job #2589260) | Cod sursa (job #2744258) | Cod sursa (job #2365182) | Cod sursa (job #3124526)
/**
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;
}