Cod sursa(job #842254)

Utilizator Brz_VladBrezae Vlad Brz_Vlad Data 26 decembrie 2012 15:46:57
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <string.h>

#define MAXN 500001

int N;
int v[MAXN];
int temp[MAXN];

void print()
{
	int i;
	for(i=1;i<=N;i++)
		printf("%d ",v[i]);
	printf("\n");
}


void mergesort(int st, int dr)
{
	if( st == dr )
		return;
	
	int mid = (st+dr)/2;
	mergesort(st,mid);
	mergesort(mid+1,dr);
	
	int i=st;
	int j=mid+1;
	int k;
	for(k=st;k<=dr;k++){
		if( i <= mid && ( j > dr || v[i] < v[j] ) ){
			temp[k] = v[i];
			i++;
		}
		else{
			temp[k] = v[j];
			j++;
		}
	}
	memcpy(&v[st],&temp[st],(dr-st+1)*sizeof(int));
}

int main(int argc, char* argv[])
{
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
		
	scanf("%d",&N);
	int i=0;
	for(i=1;i<=N;i++)
		scanf("%d",&v[i]);
	

	mergesort(1,N);
	
	print();	
		
	return 0;
}