Pagini recente » Cod sursa (job #1535356) | Cod sursa (job #2688356) | Cod sursa (job #1114475) | Cod sursa (job #1325187) | Cod sursa (job #1894185)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
void merge(int *&toBeSorted,int start, int end){
int u[end - start +1];
int mid = start + (end - start)/2;
int i = start;
int j = mid + 1;
int k = 1;
while(i <= mid && j <= end)
if( toBeSorted[i] <= toBeSorted[j] )
u[k++] = toBeSorted[i++];
else
u[k++] = toBeSorted[j++];
while( i <= mid)
u[k++] = toBeSorted[i++];
while( j <= end)
u[k++] = toBeSorted[j++];
int x = 1;
for(int i = start; i <= end; i++ )
if( x < k)
{
toBeSorted[i] = u[x];
x++;
}
}
void merge_sort(int *&toBeSorted, int start, int end) {
if(start == end)
return;
int mid = start + (end - start)/2;
merge_sort(toBeSorted,start,mid);
merge_sort(toBeSorted,mid+1,end);
merge(toBeSorted,start,end);
}
int main() {
ifstream in("algosort.in");
ofstream out("algosort.out");
int n;
int *v;
in >> n;
v = (int*)malloc( ( n + 1) *sizeof(int));
for(int i = 1; i <= n; i++)
in >> v[i];
merge_sort(v,1,n);
for(int i = 1; i <= n; i++ )
out << v[i] << " ";
return 0;
}