Pagini recente » Cod sursa (job #1137274) | Cod sursa (job #2672519) | Cod sursa (job #2811149) | Cod sursa (job #1244638) | Cod sursa (job #1946179)
#include <iostream>
#include <fstream>
using namespace std;
void merge_sort(int v[],int left,int right)
{
if(right - left <= 0)
return;
else if(right - left == 1 && v[left] > v[right]){
swap(v[right], v[left]);
return;
}
else if(right - left == 1)
return;
int aux[right - left + 5];
int mid = (left + right)/2;
merge_sort(v,left,mid);
merge_sort(v,mid + 1,right);
int i = left,j = mid + 1,sz = 0;
while(i <= mid && j <= right){
if(v[i] <= v[j]){
aux[++sz] = v[i];
++i;
}
else{
aux[++sz] = v[j];
++j;
}
}
while(i <= mid){
aux[++sz] = v[i];
++i;
}
while(j <= right){
aux[++sz] = v[j];
++j;
}
for(int k = 1 ; k <= sz ; ++k)
v[left + k - 1] = aux[k];
}
int main()
{
ifstream in("algsort.in");
ofstream out("algsort.out");
int n, a[500000],i,j,aux;
in>>n;
for (i=1; i<=n; i++){
in>>a[i];
}
merge_sort(a,1,n);
for ( i=1; i<=n; i++){
out<<a[i]<<" ";
}
return 0;
}