Pagini recente » Cod sursa (job #1297288) | Cod sursa (job #865110) | Cod sursa (job #3255271) | Cod sursa (job #1273996) | Cod sursa (job #1502713)
#include <fstream>
#include <queue>
#include <cstring>
#include <ctime>
#include <stdlib.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int NMAX = 500001;
int N;
int v[NMAX];
void read() {
fin >> N;
for(int i = 1 ; i <= N; ++i)
fin >> v[i];
}
void quicksort(int st, int dr) {
if(dr <= st) return;
int pivot = rand() % (dr - st) + st;
swap(v[pivot], v[dr]);
pivot = dr;
int index = st;
int aux;
for(int i = st ; i < dr; ++i)
if(v[pivot] > v[i]) {
//swap(v[index++], v[i]);
aux = v[index];
v[index++] = v[i];
v[i] = aux;
}
aux = v[index];
v[index] = v[dr];
v[dr] = aux;
//swap(v[index], v[dr]);
if(index - 1 > st)
quicksort(st, index - 1);
if(index + 1 < dr)
quicksort(index + 1, dr);
}
int main() {
read();
srand(time(NULL));
quicksort(1, N);
for(int i = 1; i <= N; i++)
fout << v[i] << " ";
return 0;
}