Pagini recente » Cod sursa (job #61832) | Cod sursa (job #1490856) | Cod sursa (job #2819098) | Rating Tudor Stefania - Miruna (TudorStefania) | Cod sursa (job #976711)
Cod sursa(job #976711)
#include <fstream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
int v[500005];
int alege(int n)
{
int x;
if((n/RAND_MAX))
x=rand()%(n/RAND_MAX);
else
x=0;
return ((x*RAND_MAX)+rand())%n;
}
void qsort(int st,int dr)
{
if(st>=dr)
return;
int p=alege(dr-st+1)+st;
swap(v[p],v[st]);
int i,j;
for(i=st+1,j=st+1;i<=dr;i++)
if(v[i]<v[st])
{
swap(v[i],v[j]);
j++;
}
swap(v[st],v[j-1]);
qsort(st,j-2);
qsort(j,dr);
}
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
srand(time(0));
int n=0,i;
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
//Functia de QuickSort ia TLF pe ultimul test, asa ca am sa folosesc IntroSort-ul din STL
sort(v+1,v+n+1);
for(i=1;i<=n;i++)
fout<<v[i]<<' ';
fin.close();
fout.close();
return 0;
}