Pagini recente » Cod sursa (job #2854755) | Cod sursa (job #757600) | Cod sursa (job #1283804) | Cod sursa (job #2331220) | Cod sursa (job #1539205)
#include <iostream>
#include <fstream>
#include <vector>
#include <string.h>
#include <algorithm>
using namespace std;
int partition(int *a, int st, int dr, int pivot) {
swap(a[pivot], a[dr]);
int l = st;
for(int i = st ; i < dr ; ++ i)
if(a[i] < a[dr]) {
swap(a[l ++], a[i]);
}
swap(a[dr], a[l]);
return l;
}
void quicksort(int *a, int st, int dr) {
if(st >= dr)
return ;
int pivot = rand() % (dr - st + 1) + st;
int ind = partition(a, st, dr, pivot);
quicksort(a, st, ind - 1);
quicksort(a, ind + 1, dr);
}
int main() {
srand(time(NULL));
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin >> n;
int a[n];
for(int i = 0 ; i < n ; ++ i)
fin >> a[i];
quicksort(a, 0, n - 1);
for(int i = 0 ; i < n ; ++ i)
fout << a[i] << ' ';
}