Cod sursa(job #1019783)

Utilizator vlad008Stan Vladut Angel vlad008 Data 31 octombrie 2013 22:05:48
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <stdio.h>

using namespace std;
int n, a[1000001];
int mergesort (int left, int right) 
	{if (left == right)
        return 0;
    int middle = (left + right) / 2;
    
	mergesort(left, middle);
    mergesort(middle + 1, right);
	inter(left, middle, right);
	}
	
int inter(int low,int mid,int high)
{ int h,i,j,b[1000001],k;
 h=low;
 i=low;
 j=mid+1;

 while((h<=mid)&&(j<=high))
	{if(a[h]<=a[j])
		{b[i]=a[h];
		h++;}
		
		else
		{b[i]=a[j];
		j++;
		}
	i++;
	}
	if(h>mid)
		{for(k=j;k<=high;k++)
			{b[i]=a[k];
			i++;}
		}
		else
		{for(k=h;k<=mid;k++)
			{b[i]=a[k];
			i++;
			}
		}
	for(k=low;k<=high;k++) a[k]=b[k];
return 0;}

int main() 
{
ifstream f("algsort.in");	
ofstream g("algsort.out");
f>>n;
for (int i=1;i<=n;i++)
	f>>a[i];
   
mergesort(1, n);
    
for (int i = 1; i<=n ; i++)
	cout << a[i] << " ";
    
return 0;

}