Cod sursa(job #1214774)

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

#include <stdio.h>

#define dim 50001

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++];
  	}

	for(i=st; i<=dr; i++){
	  A[i]=B[i];
	}

	
}

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",B[i]);
	}

}