Cod sursa(job #1011171)

Utilizator romagiaroma gia romagia Data 16 octombrie 2013 13:51:33
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include<fstream>
using namespace std;
long b[500000];
void interclas(int st,int dr,int v[])
{int s=1,mij=(st+dr)/2,k=st,j=mij+1;
while(k<=mij||j<=dr)
{if(k>mij){b[s++]=v[j++];continue;}
if(j>dr){b[s++]=v[k++];continue;}
if(v[k]<v[j])b[s++]=v[k++];
else b[s++]=v[j++];}
for(k=st,j=1;k<=dr;k++,j++)v[k]=b[j];}

void mergesort(int st,int dr,int v[])
{if(st==dr)return;
int m=(st+dr)/2;
mergesort(st,m,v);
mergesort(m+1,dr,v);
interclas(st,dr,v);}

int main()
{long a[500000],n;
ifstream f("algsort.in");
f>>n;
for(int i=1;i<=n;i++)f>>a[i];
f.close();

mergesort(1,n,a);
ofstream g("algsort.out");
for(int i=1;i<=n;i++)g<<a[i]<<" ";
g.close();}