Cod sursa(job #340918)

Utilizator MihaiGmihaig MihaiG Data 16 august 2009 23:20:08
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.h>
#define p 500001
int i,sir[p],n;
FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");

void citire(){
	fscanf(f,"%d",&n);
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&sir[i]);
}

void swap(int *a, int *b){
	int t=*a; *a=*b; *b=t;
}
void qsort(int arr[], int beg, int end){
	if (end > beg + 1){
		int piv = arr[beg], left = beg + 1, right = end;
		while (left < right){
			if (arr[left] <= piv)
				left++;
			else
			swap(&arr[left], &arr[--right]);
		}
    swap(&arr[--left], &arr[beg]);
    qsort(arr, beg, left);
    qsort(arr, right, end);
	}
}
void scriere(){
	for(i=1;i<=n;i++){
		fprintf(g,"%d ",sir[i]);
	}
}
int main(){
	
	citire();
	qsort(sir,1,n+1);
	scriere();
	
	fclose(f);
	fclose(g);
	return 0;
}