Pagini recente » civilizatie | Cod sursa (job #309614) | Cod sursa (job #20066) | Cod sursa (job #763314) | Cod sursa (job #1539210)
#include <iostream>
#include <fstream>
#include <vector>
#include <string.h>
#include <algorithm>
using namespace std;
inline 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;
}
inline 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);
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]);
quicksort(a, st, l - 1);
quicksort(a, l + 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] << ' ';
}