Pagini recente » Cod sursa (job #2497333) | Cod sursa (job #2611513) | Cod sursa (job #1564981) | Cod sursa (job #2783050) | Cod sursa (job #1746195)
#include<cstdio>
#define NMax 500000
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);
}
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)/2];
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);
}
int main()
{
FILE *fout = fopen("algsort.out","w");
Read();
QSort(0, n-1);
for(int i=0; i<n; i++)
fprintf(fout,"%d ",a[i]);
fclose(fout);
return 0;
}