Pagini recente » Cod sursa (job #1206031) | Statistici Moraraenu Mihai (mihaita494) | Cod sursa (job #2842391) | Autentificare | Cod sursa (job #2669879)
#include <stdio.h>
#define NMAX 500000
int v[NMAX + 5];
int swap(int a , int b){ // interschimbare
int aux;
aux = v[a];
v[a] = v[b];
v[b] = aux;
}
void qsort(int begin, int end){
int pivot = v[(begin + end) / 2];
int b = begin, e = end;
while (v[b] < pivot)
b++;
while (v[e] > pivot)
e--;
while(b < e){
swap(b,e);
do
b++;
while(v[b] < pivot);
do
e--;
while(v[e] > pivot);
}
if (begin < e)
qsort(begin, e);
if (e + 1 < end)
qsort(e + 1, end);
}
int main(){
FILE *fin ,*fout;
fin = fopen("algsort.in","r");
fout = fopen("algsort.out","w");
int n,i;
fscanf(fin,"%d",&n);
for(i = 0; i < n; i++){
fscanf(fin,"%d",&v[i]);
}
qsort(0,n - 1);
for(i = 0;i < n;i ++){
fprintf(fout,"%d ",v[i]);
}
return 0;
}