Pagini recente » Cod sursa (job #2549672) | Cod sursa (job #2675051) | Cod sursa (job #1455330) | Cod sursa (job #1112269) | Cod sursa (job #2645037)
/*#include <iostream>
using namespace std;
void interclasare(int x[100], int y[100], int v[100], int s, int e){
int m=(s+e)/2;
int i=s;
int j=m+1;
int k=s;
while(i<=m && j<=e){
if(x[i]<y[j]){
v[k]=x[i];
i++;
k++;
}
else{
v[k]=y[j];
j++;
k++;
}
}
while(i<=m){
v[k]=x[i];
i++;
k++;
}
while(j<=e){
v[k]=y[j];
j++;
k++;
}
}
void mergeSort(int v[100],int s, int e){
if(s>=e)
return;
int m=(s+e)/2;
int x[100],y[100];
for(int i=0;i<=m;i++)
x[i]=v[i];
for(int i=m+1;i<=e;i++)
y[i]=v[i];
mergeSort(x,s,m);
mergeSort(y,m+1,e);
interclasare(x, y, v, s, e);
}
int main() {
int v[100],n;
cin>>n;
for(int i=0;i<=n-1;i++)
cin>>v[i];
mergeSort(v,0,n-1);
for(int i=0;i<=n-1;i++)
cout<<v[i]<<" ";
}*/
#include <iostream>
#include <fstream>
using namespace std;
void interclasare(long *x, long *y, long *v, int s, int e){
long m=(s+e)/2;
long i=s;
long j=m+1;
long k=s;
while(i<=m && j<=e){
if(x[i]<y[j]){
v[k]=x[i];
i++;
k++;
}
else{
v[k]=y[j];
j++;
k++;
}
}
while(i<=m){
v[k]=x[i];
i++;
k++;
}
while(j<=e){
v[k]=y[j];
j++;
k++;
}
}
void mergeSort(long *v,long s, long e){
if(s>=e)
return;
long m=(s+e)/2;
long *x,*y;
for(long i=0;i<=m;i++)
x[i]=v[i];
for(long i=m+1;i<=e;i++)
y[i]=v[i];
mergeSort(x,s,m);
mergeSort(y,m+1,e);
interclasare(x, y, v, s, e);
}
int main() {
long *v,n;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin>>n;
for(long i=0;i<=n-1;i++)
fin>>v[i];
mergeSort(v,0,n-1);
for(long i=0;i<=n-1;i++)
fout<<v[i]<<" ";
fin.close();
fout.close();
return 0;
}