Cod sursa(job #1333005)

Utilizator TeodorescuStefanEduardTeodorescu Stefan Eduard TeodorescuStefanEduard Data 2 februarie 2015 17:50:01
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<iostream>
#include<fstream>

using namespace std;
fstream in("algsort.in",ios::in);
fstream out("algsort.out",ios::out);

void quiq(int*,int,int);
int part(int*,int,int);

int main()
{
    int a[500000],n,i;
    in>>n;
    for(i=0;i<n;i++)
        in>>a[i];
    quiq(a,0,n-1);
    for(i=0;i<n;i++)
        out<<a[i]<<" ";
    out<<"\n";

    in.close();
    out.close();
    return 0;
}

void quiq(int a[],int down,int up)
{
    if((up-down)<2)
        return;
    int mid;
    mid=part(a,down,up);
    quiq(a,down,mid-1);
    quiq(a,mid+1,up);
}

int part(int a[],int down,int up)
{
    int p,ip,j,x,i;
    ip=down+(up-down)/2;
    p=a[ip];
    a[ip]=a[up];
    a[up]=p;
    j=down;
    for(i=down;i<up;i++)
        if(a[i]<a[up])
        {
            x=a[i];
            a[i]=a[j];
            a[j]=x;
            j++;
        }
    x=a[j];
    a[j]=a[up];
    a[up]=x;
    return j;
}