Cod sursa(job #1214778)

Utilizator toncuvasileToncu Vasile toncuvasile Data 31 iulie 2014 12:51:15
Problema Sortare prin comparare Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.77 kb

#include <stdio.h>

#define dim 500001

int A[dim], B[dim], n;

void Interchange(int st, int dr, int mid)
{
	int i=st, j=mid+1, k=st;
	while( (i<=mid) && (j<=mid+1) ){
		if(A[i]<=A[j]){
			B[k++]=A[i++];
		}else{
			B[k++]=A[j++];
		}
	}

	while( i<=mid ){
		B[k++]=A[i++];
	}
	while( j<=dr ){
		B[k++]=A[j++];
  	}
	
	int t;
	for(t=st; t<=dr; t++){
	  A[t]=B[t];
	}

	
}

void MergeSort(int st, int dr)
{
	if( st<dr ){
		int mid=(st+dr)/2;
		MergeSort(st,mid);
		MergeSort(mid+1,dr);
		Interchange(st,dr,mid);
	}
}

int main()
{
	FILE *fin;
	fin = fopen("algosort.in","r");

	FILE *fout;
	fout = fopen("algosort.out","w");

	fscanf(fin,"%d",&n);
	int i;
	for(i=0; i<n; i++ ){
	  fscanf(fin,"%d",A+i);
	}

	MergeSort(0,n-1);

	for(i=0; i<n; i++){
		fprintf(fout,"%d",A[i]);
	}

}