Cod sursa(job #801054)

Utilizator vladiiIonescu Vlad vladii Data 23 octombrie 2012 11:58:13
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
using namespace std;
#define maxn 500010

int N;
int A[maxn];

void quickSort(int left, int right) {
     if(left >= right) return;

     int mid = (left + right) / 2;

     swap(A[mid], A[right]);

     int pos = left;

     for(int i=left; i<right; i++) {
          if(A[i] < A[right]) {
               swap(A[pos], A[i]);

               pos ++;
          }
     }

     swap(A[pos], A[right]);

     quickSort(left, pos - 1);
     quickSort(pos + 1, right);
}

int main() {
     srand(time(NULL));

     fstream f1, f2;
     f1.open("algsort.in", ios::in);
     f2.open("algsort.out", ios::out);

     f1 >> N;
     for(int i=1; i<=N; i++) {
          f1 >> A[i];
     }

     quickSort(1, N);

     for(int i=1; i<=N; i++) {
          f2 << A[i] << ' ';
     }

     f2 << '\n';
     f1.close(); f2.close();
     return 0;
}