Cod sursa(job #274093)

Utilizator alexandru92alexandru alexandru92 Data 9 martie 2009 13:39:19
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<stdio.h>
#include<stdlib.h>
long n,i,v[500001];
void Qsort(long st,long dr);
int main()
  {
    freopen("algsort.in","rt",stdin);
    freopen("algsort.out","wt",stdout);
    scanf("%ld",&n);
    for(i=1;i<=n;++i) scanf("%ld",&v[i]);
    Qsort(1,n);
    for(i=1;i<=n;++i) printf("%ld ",v[i]);
    //system("PAUSE");
    return 0;
  }
long sort(long st,long dr)
  {
   long x=v[st];
   while(st<dr)
        {while(st<dr&&v[dr]>=x) dr--;
         v[st]=v[dr];
         while(st<dr&&v[st]<=x) st++;
         v[dr]=v[st];
        }
   v[st]=x;
   return st;
   }
void Qsort(long st,long dr)
  {
   long m=sort(st,dr);
   if(m-1>st) Qsort(st,m-1);
   if(m+1<dr) Qsort(m+1,dr);
  }