Pagini recente » Cod sursa (job #659888) | Cod sursa (job #558860) | Cod sursa (job #1605176)
#include <stdio.h>
#include <stdlib.h>
#define IN "algsort.in"
#define OUT "algsort.out"
#define NMAX 500001
int n, v[NMAX];
void read (void){
int i;
scanf ("%d", &n);
for (i = 0; i < n; ++ i)
scanf ("%d", &v[i]);
}
void print (void){
int i;
for (i = 0; i < n; ++i)
printf ("%d ", v[i]);
}
inline void swap (int *a, int *b){
int c = *a;
*a = *b;
*b = c;
}
void quickSort (int left, int right){
int i = left, j = right, middle = (left + right) / 2;
while (i <= j){
while (v[i] < v[middle])
++ i;
while (v[j] > v[middle])
-- j;
if (i <= j){
swap (&v[i], &v[j]);
++ i;
-- j;
}
}
if (left < j)
quickSort (left, j);
if (i < right)
quickSort (i, right);
}
int main(void){
freopen (IN, "r", stdin);
freopen (OUT, "w", stdout);
read ();
quickSort (0, n - 1);
print ();
fclose (stdin);
fclose (stdout);
return 0;
}