Cod sursa(job #1806725)

Utilizator Remus12Remus Dan Remus12 Data 15 noiembrie 2016 17:36:53
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <cstdlib>
using namespace std;
const int N=100000;
int v[N];

void schimb(int &a,int &b)
{
    int c=a;
    a=b;
    b=c;
}

int partitie(int v[],int st,int dr)
{
    int i,j,piv=v[dr];
    for(i=j=st; i<dr; i++)
        if(v[i]<piv)
        {
            schimb(v[i],v[j]);
            j++;
        }
    schimb(v[j],v[dr]);
    return j;
}
void qs(int v[],int st,int dr)
{
    if(st>=dr) return;
    int p=partitie(v,st,dr);
    if(k<p)
        qs(v,st,p-1);
    if(k>p)
        qs(v,p+1,dr);
}

int main()
{
    int n,i,v[N],j,st,p;
    cin>>n;
    for(i=1; i<=n; i++)
        cin>>v[i];
    for(i=n; i>=1; i--)
    {
        j=1+rand()%i;
        schimb(v[i],v[j]);
    }
    qs(v, 1, n);
    for(i=1;i<=n;i++)
        cout<<v[i]<" ";

    return 0;
}