Pagini recente » Cod sursa (job #720279) | Cod sursa (job #3243249) | Cod sursa (job #1434465) | Cod sursa (job #436302) | Cod sursa (job #2334624)
#include <stdio.h>
#define dmax 500005
int v[dmax];
int N;
void swap(int *x, int *y){
int temp = *x;
*x = *y;
*y = temp;
}
int partition(int start, int stop){
int i = start - 1;
int x = v[stop];
for(int j = start; j < stop; j++){
if(v[j] <= x){
i++;
swap(&v[i], &v[j]);
}
}
swap(&v[i + 1], &v[stop]);
return (i + 1);
}
void quicksort(int low, int high){
if(low < high){
int pos = partition(low, high);
quicksort(low, pos - 1);
quicksort(pos + 1, high);
}
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &N);
for(int i = 0; i < N; i++){
scanf("%d", &v[i]);
}
quicksort(0, N - 1);
for(int i = 0; i < N ; i++){
printf("%d ", v[i]);
}
printf("\n");
return 0;
}