Cod sursa(job #658955)

Utilizator blk.irineluIrina Ursateanu blk.irinelu Data 9 ianuarie 2012 20:37:37
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<stdio.h>
#include<algorithm>
#include<vector>

using namespace std;

vector <int> a;
int n, x, i;

int part(int st, int dr)
{
    int i = st - 1, j = dr + 1, q = a[(st + dr) / 2];
    while(1)
    {
        do
        {
            i ++;
        }while(a[i] < q);
        do
        {
            j --;
        }while(a[j] > q);
        if(i < j)
            swap(a[i], a[j]);
        else
            return j;
    }
    return 'nk';
}
void quick_sort(int st, int dr)
{
    if(st < dr)
    {
        int q = part(st, dr);
        quick_sort(st, q);
        quick_sort(q + 1, dr);
    }
}
int main()
{
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

    scanf("%d",&n);
	a.push_back(0);

	for(i = 0; i < n;i ++)
    {
        scanf("%d", &x);
        a.push_back(x);
    }

    quick_sort(1, n);
    for(i = 1; i <= n; i ++)
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}