Pagini recente » Cod sursa (job #2812078) | Cod sursa (job #2734868) | Cod sursa (job #2731043) | Cod sursa (job #1900613) | Cod sursa (job #261146)
Cod sursa(job #261146)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <stack>
using namespace std;
vector<int> V;
int partition (int Left, int Right){
int piv, aux, i = Left - 1, j = Right + 1;
piv = V[(Left + Right) >> 1];
while (1){
do {++i;} while (V [i] < piv);
do {--j;} while (V [j] > piv);
if (i < j){
aux = V[i];
V[i] = V[j];
V[j] = aux;
}
else
return j;
}
}
void quick_sort(int Left, int Right){
if (Left < Right){
int Middle = partition (Left, Right);
quick_sort (Left, Middle);
quick_sort (Middle + 1, Right);
}
}
int main(){
int N, i, a;
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &N);
srand(time(NULL));
for (i = 1; i <= N; ++i){
scanf("%d", &a);
V.push_back(a);
}
quick_sort(0, N - 1);
for (i = 0; i < N; ++i)
printf("%d ", V[i]);
}