Cod sursa(job #649819)

Utilizator yippeeErja Eduard yippee Data 16 decembrie 2011 20:00:34
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

using namespace std;

int compare(const void *a,const void *b)
{
    return (*(int*)a - *(int*)b);
}

int pivot(int a[],int st, int dr)
{
  int sens = 1;
  while(st <= dr)
  {
      if(a[st] > a[dr])
       {
           swap(a[st],a[dr]);
           sens = 1 - sens;
       }
      else
        sens == 1 ? st++ : dr--;
  }

  return dr;
}

void Quicksort(int a[],int st, int dr)
{
    if(st <= dr)
     {
         int p = pivot(a,st,dr);
         Quicksort(a,st,p-1);
         Quicksort(a,p+1,dr);
     }
}

int main()
{
    FILE *f = fopen("algosort.in","r");
    FILE *g = fopen("algosort.out","w");
    int n, a[100000];
    fscanf(f,"%d", &n);


    for(int i=0; i<n; i++)
     fscanf(f,"%d", &a[i]);

    // qsort(a,n,sizeof(int),compare);
    Quicksort(a,0,n-1);

    for(int i=0; i<n; i++)
     fprintf(g,"%d ", a[i]);


    return 0;
}