Pagini recente » Cod sursa (job #1234846) | Monitorul de evaluare | Cod sursa (job #1111614) | Cod sursa (job #464741) | Cod sursa (job #2482044)
#include <fstream>
#define DIM 500001
using namespace std;
int N;
int array[DIM];
int partition(int left, int right) {
int pivot = array[right];
int i = left;
for (int j = left; j < right; j ++) {
if (array[j] <= pivot) {
swap(array[i], array[j]);
++ i;
}
}
swap(array[i], array[right]);
return i;
}
void quick_sort(int left, int right) {
if (left >= right) {
return;
}
int random = left + rand() % (right - left + 1);
swap(array[random], array[right]);
int pos = partition(left, right);
quick_sort(left, pos - 1);
quick_sort(pos + 1, right);
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin >> N;
for (int i = 1; i <= N; i ++) {
fin >> array[i];
}
srand(time(NULL));
quick_sort(1, N);
for (int i = 1; i <= N; i ++) {
fout << array[i] << " ";
}
fout << "\n";
fin.close();
fout.close();
return 0;
}