Cod sursa(job #656006)

Utilizator danieladDianu Daniela danielad Data 3 ianuarie 2012 19:26:11
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<iostream>
#include<fstream>
using namespace std;
int n,a[500001],b[500001];
void merge_sort(int ls,int ld){
	int mij=(ls+ld)/2;
	int nr=ls-1,l2=mij+1,l1=ls;
	if(ls>=ld)return;
	merge_sort(ls,mij);
	merge_sort(mij+1,ld);
	while(l1<=mij&&l2<=ld){
		if(a[l1]<=a[l2]){
			nr++;
			b[nr]=a[l1];
			l1++;
		}
		else{
			nr++;
			b[nr]=a[l2];
			l2++;
		}
	}
	if(l1<=mij)
		for(int i=l1;i<=mij;i++)
			b[++nr]=a[i];
	else
		for(int i=l2;i<=ld;i++)
			b[++nr]=a[i];
	for(int i=ls;i<=ld;i++)
		a[i]=b[i];
}
int main(){
	ifstream f("algsort.in");
	ofstream g("algsort.out");	
	f>>n;
	for(int i=1;i<=n;i++)
		f>>a[i];
	merge_sort(1,n);
	for(int i=1;i<=n;i++)
		g<<a[i]<<" ";
	f.close();
	g.close();
	return 0;
}