Cod sursa(job #241561)

Utilizator MciprianMMciprianM MciprianM Data 10 ianuarie 2009 13:41:02
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream>
#include<algorithm>
using namespace std;
int a[500009];
int part(int st,int dr){
  int i, j,ii, jj,aux;
  i=st;j=dr;
  ii=1;
  jj=0;
  while(i<j){
    if(a[i]>a[j]){
      swap(a[i],a[j]);
      aux=-ii;
      ii=-jj;
      jj=aux;
    }
    i+=ii;j+=jj;
  }
  return i;
}
void sortrap(int p, int u){
  if(p<u){
    swap(a[p+1],a[u-1]);
    int m=part(p,u);
    sortrap(p,m-1);
    sortrap(m+1,u);
  }
}
int main(){
  ifstream f("algsort.in");
  ofstream g("algsort.out");
  int n,i;
  f>>n;
  for(i=0;i<n;i++)
    f>>a[i];
  f.close();
  sortrap(0,n-1);
  for(i=0;i<n;i++)
    g<<a[i]<<' ';
  g<<'\n';
  g.close();
  return 0;
}