Cod sursa(job #455983)

Utilizator Smaug-Andrei C. Smaug- Data 14 mai 2010 17:47:55
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>

void swap(unsigned a[], int x, int y){
  static unsigned aux;
  aux = a[x];
  a[x] = a[y];
  a[y] = aux;
}

void qsort(unsigned a[], int left, int right){

  int i, last;

  if(left >= right)
    return;

  swap(a, left, (left+right)/2);
  last = left;

  for(i = left+1; i <= right; i++)
    if(a[i] < a[left])
      swap(a, ++last, i);

  swap(a, left, last);
  qsort(a, left, last-1);
  qsort(a, last+1, right);

}

int main(){

  freopen("algsort.in", "r", stdin);
  freopen("algsort.out", "w", stdout);

  int i, n;
  unsigned a[500000];

  scanf("%d", &n);
  for(i = 0; i < n; i++)
    scanf("%u", a+i);

  qsort(a, 0, n-1);

  for(i = 0; i < n; i++)
    printf("%u ", a[i]);
  printf("\n");

}