Pagini recente » Cod sursa (job #2253830) | Cod sursa (job #2165305) | Cod sursa (job #420322) | Cod sursa (job #701384) | Cod sursa (job #3144692)
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <algorithm>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int N, v[500005];
inline void swap(int *a, int *b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
inline int partition(int *A, int st, int dr) {
int lo = st - 1;
int hi = dr - 1;
for (int i = st; i <= hi; i++)
if (A[i] <= A[dr]) {
lo++;
swap(&A[i], &A[lo]);
}
swap(&A[lo + 1], &A[dr]);
return lo + 1;
}
inline int randomPartition(int *A, int st, int dr) {
srand(time(NULL));
int random = st + rand() % (dr - st);
swap(&A[random], &A[dr]);
return partition(A, st, dr);
}
inline void quickSort(int *A, int st, int dr) {
if (st < dr) {
int piv = randomPartition(A, st, dr);
quickSort(A, st, piv - 1);
quickSort(A, piv + 1, dr);
}
}
int main() {
fin >> N;
for (int i = 0; i < N; i++)
fin >> v[i];
// quickSort(v, 0, N - 1);
sort(v, v + N);
for (int i = 0; i < N; i++)
fout << v[i] << ' ';
fout << '\n';
fin.close();
fout.close();
return 0;
}