Pagini recente » Cod sursa (job #3265801) | Cod sursa (job #590248) | Cod sursa (job #2727493) | Cod sursa (job #1603007) | Cod sursa (job #646161)
Cod sursa(job #646161)
#include <stdio.h>
#include <stdlib.h>
int v[500001];
void qs(int* a,int l, int r)
{
int q;
if(l<r)
{
q = part(a,l,r);
qs(a,l,q-1);
qs(a,q+1,r);
}
}
int part(int* a,int l, int r)
{
int piv = a[r];
int i=l-1;
int j;
int t;
for(j=l;j<r;j++)
{
if(a[j]<=piv)
{
i++;
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
t = a[i+1];
a[i+1] = a[r];
a[r] = t;
return i+1;
}
int file_exists(const char * filename)
{
FILE * file;
if (file = fopen(filename, "r"))
{
fclose(file);
return 1;
}
return 0;
}
int main(int argc,char** argv)
{
FILE *f;
FILE *fout;
char* fname;
char buf[8];
int ln = 0;
int i = 0;
int x;
//v = (int *)malloc(sizeof(int) * 15);
fname = "algsort.in";
//printf("%d",argc);
//printf("\n%s",fname);
if(file_exists(fname))
f = fopen(fname,"r");
else
{
return 1;
}
while(fscanf(f,"%s",buf) != EOF)
{
x = atoi(buf);
v[ln++] = x;
}
//printf("%d\n",v[0]);
qs(v,0,ln-1);
fout = fopen("algsort.out","w");
for(i=0;i<ln;i++)
fprintf(fout,"%d ",v[i]);
fclose(f);
fclose(fout);
}