Cod sursa(job #316402)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 19 mai 2009 14:43:43
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<iostream>
#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 QSort(int st,int dr)
{
    if(st<dr)
    {
        int q=part(st,dr);
        QSort(st,q);
        QSort(q+1,dr);
    }
}
int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);a.push_back(1);
    for(i=0;i<n;i++)
    {
        scanf("%d",&x);
        a.push_back(x);
    }
    QSort(1,n);
    for(i=1;i<=n;i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}