Cod sursa(job #474722)

Utilizator andra23Laura Draghici andra23 Data 4 august 2010 20:03:15
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<iostream>
#include<fstream>
#include<time.h>
#include<unistd.h>
#define N 100000

using namespace std;

int a[500010];
ofstream g;

int partition(int lo, int hi){
    int i = lo, j = hi;
    int val, aux;
    val = a[lo];
    i = lo;
    j = hi;
    while (i < j){
        while ( a[j] > val)
            j--;
        aux = a[i];
        a[i] = a[j];
        a[j] = aux; 
        i++;
        
        while ( a[i] < val)
            i++;
        aux = a[i];
        a[i] = a[j];
        a[j] = aux; 
        j--;
    }
    return j;
}

void quick(int lo, int hi){
    int x, nx, aux, i, j;
    if (lo < hi){
        nx = partition(lo, hi);
        quick(lo, nx-1);
        quick(nx+1, hi);
    }    
}

int main(){
    ifstream f("algsort.in");
    g.open("algsort.out");
    int n, i;
    f>>n;
    srand(getpid());
    for (i = 0; i < n; i++)
        f>>a[i];
    
    quick(0, n-1);
    
    for (i = 0; i < n; i++)
        g<<a[i]<<" ";
    g<<'\n';
     
    return 0;
}