Pagini recente » Cod sursa (job #686870) | Cod sursa (job #2927375) | Cod sursa (job #1910094) | Cod sursa (job #105086) | Cod sursa (job #1854264)
#include<cstdio>
#define NMAX 500002
using namespace std;
int a[NMAX], n;
void Read()
{
FILE *fin = fopen("algsort.in","r");
fscanf(fin,"%d",&n);
for(int i=0; i<n; i++)
fscanf(fin,"%d",&a[i]);
fclose(fin);
}
inline void schimba(int i, int j)
{
int aux = a[i];
a[i] = a[j];
a[j] = aux;
}
void QSort(int p, int q)
{
int left = p, right = q, pivot = a[(p+q)>>1];
while(left <= right)
{
while(a[left] < pivot) left++;
while(a[right] > pivot) right--;
if(left <= right)
{
schimba(left,right);
left++;
right--;
}
}
if(p < right) QSort(p,right);
if(left < q) QSort(left,q);
}
void Write()
{
FILE *fout = fopen("algsort.out","w");
for(int i=0; i<n; i++)
fprintf(fout,"%d ",a[i]);
fprintf(fout,"\n");
fclose(fout);
}
int main()
{
Read();
QSort(0,n-1);
Write();
return 0;
}