Pagini recente » Cod sursa (job #3192543) | Cod sursa (job #659618) | Cod sursa (job #1034190) | Profil Vlad_Stancu | Cod sursa (job #1569105)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
void merge(unsigned int arr[], unsigned int size1, unsigned short int low, unsigned int middle, unsigned int high)
{
unsigned int *temp;
temp=new unsigned int[size1];
for (unsigned int i=low; i<=high; i++)
{
temp[i]=arr[i];
}
unsigned int i=low;
unsigned int j=middle+1;
// int temp[size1];
unsigned int k=low;
while (i<=middle && j<= high)
{
if(temp[i] <= temp [j])
{
arr[k]=temp[i];
i++;
}
else
{
arr[k]= temp [j];
j++;
}
k++;
}
while(i<=middle)
{
arr[k]=temp [i];
k++;
i++;
}
}
void mergeSort (unsigned int arr[], unsigned int size1, unsigned int low, unsigned int high)
{
if(low< high)
{
unsigned int middle=(low + high)/2;
mergeSort(arr, size1, low, middle);
mergeSort(arr,size1, middle+1,high);
merge(arr,size1,low,middle,high);
}
}
unsigned int n;
unsigned int v[500000];
int main()
{
f>>n;
for(unsigned int i = 0; i<n;i++)
f>>v[i];
mergeSort(v,n,0,n-1);
for(unsigned int i = 0; i<n;i++)
g<<v[i]<<" ";
f.close();
g.close();
return 0;
}