Cod sursa(job #1708640)

Utilizator liviu23Liviu Andrei liviu23 Data 27 mai 2016 18:00:06
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define DIM 500001
using namespace std;

int n,v[DIM];

int divide(int st, int dr) {
    swap(v[rand()%(n+1)],v[dr]);
    int wall=st-1;
    for(int i=st;i<dr;i++) {
        if(v[i]<v[dr]) {
            wall++;
            swap(v[wall],v[i]);
        }
    }
    swap(v[wall+1],v[dr]);
    return wall+1;
}

void quick_sort(int st, int dr) {
    if(st<dr) {
        int pivot=divide(st,dr);
        quick_sort(st,pivot-1);
        quick_sort(pivot+1,dr);
    }
}

int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&v[i]);
    quick_sort(1,n);
    for(int i=1;i<=n;i++)
        printf("%d ",v[i]);
    return 0;
}