Pagini recente » Cod sursa (job #225368) | Cod sursa (job #2442988) | Cod sursa (job #3214363) | Cod sursa (job #2131310) | Cod sursa (job #2660535)
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
void mrg(int*a,int l1,int*b,int l2,int*c){//merges a and b into c
int x=0,y=0,cursor=0;
while(x<l1 || y<l2){
if(x==l1){
c[cursor++]=b[y];
y++;
}
else if(y==l2){
c[cursor++]=a[x];
x++;
}
else{
if(a[x]<b[y]){
c[cursor++]=a[x];
x++;
}
else{
c[cursor++]=b[y];
y++;
}
}
}
}
void srt(int*arr,int l,int r){
if(l>=r){
return;
}
int result[r-l+1];
int middle=(l+r)/2;
srt(arr,l,middle);
srt(arr,middle+1,r);
mrg(arr+l,middle-l+1,arr+middle+1,r-middle,result);
for(int i=l;i<=r;i++){
arr[i]=result[i-l];
}
}
int v[500000],num_values;
void read(){
in>>num_values;
for(int i=0;i<num_values;i++)
in>>v[i];
}
void solve(){
srt(v,0,num_values-1);
for(int i=0;i<num_values;i++)
out<<v[i]<<" ";
}
int main(){
read();
solve();
return 0;
}