Pagini recente » Cod sursa (job #1585485) | Cod sursa (job #1289340) | Cod sursa (job #229219) | Cod sursa (job #1651838) | Cod sursa (job #643779)
Cod sursa(job #643779)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
const int N=500001;
vector <float> b[N];
int v[N],n,minim,maxim,a[N];
void citire ()
{
int i,y;
long double p,x;
ifstream in ("algsort.in");
in>>n;
minim=2147483647;
maxim=0;
for (i=0;i<n;i++)
{
in>>v[i];
if (v[i]>maxim) maxim=v[i];
if (v[i]<minim) minim=v[i];
}
for (i=0;i<n;i++)
{
p=(v[i]-minim);
x=p/(maxim-minim+1);
y=int (n*x);
b[y].push_back(x);
a[y]=1;
}
}
void sortare ()
{
int i,j,k;
float aux;
for (i=0;i<n;i++)
if (b[i].size()>=2)
{
for (j=0;j<=b[i].size()-2;j++)
for (k=j+1;k<=b[i].size()-1;k++)
if (b[i][j]>b[i][k]) { aux=b[i][j];
b[i][j]=b[i][k];
b[i][k]=aux;
}
}
}
int main()
{
int i,j,k;
ofstream out ("algsort.out");
citire();
sortare();
k=0;
for (i=0;i<n;i++)
if (a[n]=1)
for (j=0;j<b[i].size();j++){
v[k]=b[i][j]*(maxim-minim+1)+minim;
k++;}
for (i=0;i<n;i++)
out<<v[i]<<" ";
return 0;
}