Pagini recente » Cod sursa (job #2454875) | Cod sursa (job #1954926) | Cod sursa (job #1457676)
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <utility>
using namespace std;
template <typename It, typename Pred>
It my_partition(It st, It dr, Pred p){
while(true){
while((st != dr) && p(*st)){
++st; }
if(st == dr){
break; }
--dr;
while((st != dr) && !p(*dr)){
--dr; }
if(st == dr){
break; }
iter_swap(st++, dr); }
return st; }
template <typename It>
void my_quicksort(It st, It dr){
if(dr - st > 1){
const int piv = *st;
It mij = my_partition(st, dr, [piv](const int a){
return a < piv; });
my_quicksort(st, mij);
my_quicksort(mij+1, dr); } }
int main(){
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
f >> n;
vector<int> v(n);
copy_n(istream_iterator<int>(f), n, begin(v));
my_quicksort(begin(v), end(v));
copy(begin(v), end(v), ostream_iterator<int>(g, " "));
return 0; }