Pagini recente » Cod sursa (job #1458361) | Cod sursa (job #420956) | Cod sursa (job #561621) | Cod sursa (job #1458109) | Cod sursa (job #1605195)
#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 = 1; i <= n; ++ i)
scanf ("%d", &v[i]);
}
void print (void){
int i;
for (i = 1; 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, j, pivot;
i = left, j = right, pivot = v[(left + right) / 2];
while (i <= j){
while (v[i] < pivot)
++ i;
while (v[j] > pivot)
-- 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 (1, n);
print ();
fclose (stdin);
fclose (stdout);
return 0;
}