Pagini recente » Cod sursa (job #1007667) | Cod sursa (job #2158502) | Cod sursa (job #1909134) | Cod sursa (job #1194833) | Cod sursa (job #773019)
Cod sursa(job #773019)
#include <fstream>
#include <cstdio>
#include <time.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
FILE *f = fopen("algsort.in","r");
ofstream g("algsort.out");
int n, v[500002], i, j, aux, ii0, jj0;
int piv;
char tmp[11];
char buff[5500000];
inline int poz(int i, int j){
ii0=1;
jj0=0;
piv = j - rand()%(j-i);
aux = v[piv];
v[piv] = v[j];
v[j] = aux;
while(i!=j)
{
if(v[i]>v[j])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
aux=-ii0;
ii0=-jj0;
jj0=aux;
}
i+=ii0;
j+=jj0;
}
return i;
}
void quicksort(int p, int u){
int k;
if(p<u)
{
k=poz(p, u);
quicksort(p, k-1);
quicksort(k+1, u);
}
}
void itoa (int x, char *s) {
if (x == 0) {
s[0] = '0';
s[1] = 0;
return;
}
int k = 0;
while (x) {
s[k++] = x%10 + '0';
x/=10;
}
s[k] = 0;
char aux;
for (i=0,j = k-1;i<=k/2;i++,j--) {
aux = s[i];
s[i] = s[j];
s[j] = aux;
}
}
int main(){
srand(time(0));
fscanf(f,"%d",&n);
for(i=1; i<=n; i++)
fscanf(f,"%d",&v[i]);
quicksort(1, n);
for(ii0=1; ii0<=n; ii0++) {
itoa(v[ii0], tmp);
strcat(buff, tmp);
strcat(buff, " ");
//g<<v[i]<<' ';
}
g<<buff;
return 0;
}