Cod sursa(job #688108)

Utilizator shnakoVlad Schnakovszki shnako Data 23 februarie 2012 00:30:12
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
// ShellSort
#include <stdio.h>
FILE *f=fopen("algsort.in", "r"), *g=fopen("algsort.out", "w");
long a[500001], n;

void citeste(void)
{
	fscanf(f, "%ld", &n);
	for(long i=0;i<n;i++)
		fscanf(f, "%ld", &a[i]);
	fclose(f);
}

void quickSort(int left, int right) {
      long i = left, j = right;
      long tmp;
      long pivot = a[(left + right) / 2];
 
      /* partition */
      while (i <= j) {
            while (a[i] < pivot)
                  i++;
            while (a[j] > pivot)
                  j--;
            if (i <= j) {
                  tmp = a[i];
                  a[i] = a[j];
                  a[j] = tmp;
                  i++;
                  j--;
            }
      };
 
      /* recursion */
      if (left < j)
            quickSort(left, j);
      if (i < right)
            quickSort(i, right);
}

void tipareste(void)
{
	for(long i=0;i<n;i++)
		fprintf(g, "%ld ", a[i]);
	fclose(g);
}

int main()
{
citeste();
quickSort(0, n-1);
tipareste();
return 0;
}