Cod sursa(job #612772)

Utilizator marcelcodreaCodrea Marcel marcelcodrea Data 10 septembrie 2011 01:43:32
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream.h>
#define N 500005

ifstream f("algsort.in");
ofstream g("algsort.out");

int A[N];
int n;

int swap(int i, int j) {
    int aux = A[i];
    A[i] = A[j];
    A[j] = aux;
}
int partition(int left, int right) {
    int x = A[right];
    int i = left - 1;
    for(int j = left; j < right; j++) {
        if (A[j] <= x) {
           i++;
           swap(i,j);
        }
    }
    swap(i + 1, right);
    return i + 1;
}
int qsort(int st, int dr) {
    if (st < dr) {
        int p = partition(st, dr);
        qsort(st, p - 1);
        qsort(p + 1, dr);
    }
}
void read() {
    f >> n;
    for(int i = 1; i <= n; i++) {
        f >> A[i];
    }
}
void write() {
    for(int i = 1; i <= n; i++) {
        g << A[i] << " ";
    }
}
int main() {
    read();
    qsort(1, n);
    write();
}