Pagini recente » Cod sursa (job #1945769) | Cod sursa (job #1241873) | Cod sursa (job #179261) | Cod sursa (job #529832) | Cod sursa (job #1745933)
#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);
}
int Div(int p, int q)
{
int left = p , right = q, pivot = a[p];
while(left < right)
{
while(left < right && a[right] >= pivot) right--;
a[left] = a[right];
while(left < right && a[left] <= pivot) left++;
a[right] = a[left];
}
a[left] = pivot;
return left;
}
void quicksort(int p, int q)
{
int m = Div(p, q);
if(m-1 > p) quicksort(p, m-1);
if(m+1 < q) quicksort(m+1, q);
}
int main()
{
FILE *fout = fopen("algsort.out","w");
Read();
quicksort(0, n-1);
for(int i=0; i<n; i++)
fprintf(fout,"%d ",a[i]);
fclose(fout);
return 0;
}