Pagini recente » Cod sursa (job #1709773) | Cod sursa (job #1155257) | Cod sursa (job #1706278) | Cod sursa (job #1147767) | Cod sursa (job #1814477)
#include <bits/stdc++.h>
using namespace std;
int* merge(int* a,int sizeA,int* b,int sizeB){
int* result=(int*)malloc((sizeB+sizeA)*sizeof(int));
int pa=0,pb=0,pos=-1;
while (pa<sizeA||pb<sizeB){
if (pa==sizeA){
result[++pos]=b[pb];
++pb;
} else {
if (pb==sizeB){
result[++pos]=a[pa];
++pa;
} else {
if (a[pa]<b[pb]){
result[++pos]=a[pa];
++pa;
} else {
result[++pos]=b[pb];
++pb;
}
}
}
}
return result;
}
void merge_sort(int* a,int sizeA){
//cout<<sizeA<<"\n";
if (sizeA==1) return;
merge_sort(a+sizeA/2,sizeA/2+sizeA%2);
merge_sort(a,sizeA/2);
int* aux=merge(a+sizeA/2,sizeA/2+sizeA%2,a,sizeA/2);
memcpy(a,aux,sizeA*sizeof(int));
free(aux);
}
ifstream f("algsort.in");
ofstream g("algsort.out");
int main(){
int n;
f>>n;
int* a=(int*)malloc(n*sizeof(int));
for(int i=0;i<n;++i) f>>a[i];
//merge_sort(a,n);
sort(a,a+n);
for(int i=0;i<n;++i)
g<<a[i]<<" ";
return 0;
}