Pagini recente » Cod sursa (job #2784589) | Cod sursa (job #2242944) | Cod sursa (job #1341268) | fmi-no-stress-9/solutii | Cod sursa (job #1005008)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
void Merge( int* A, int left, int mid, int right ){
int* L = new int[mid-left+1];
int* R = new int[right-mid];
for( int i = 0; i < mid-left+1; i++ )
L[i] = A[left+i];
for( int i = 0; i < right - mid; i++ )
R[i] = A[mid+i+1];
int i = 0;
int j = 0;
int k = left;
while( (i < mid - left + 1) && (j < right - mid ) ){
if( L[i] < R[j] ){
A[k] = L[i];
k++;
i++;
}
else{
A[k] = R[j];
k++;
j++;
}
}
while( i < mid - left + 1 ){
A[k] = L[i];
k++;
i++;
}
while( j < right - mid ){
A[k] = R[j];
k++;
j++;
}
}
void MergeSort( int* A, int left, int right ){
if( left < right ){
int mid = left + (right-left)/2;
MergeSort( A, left, mid );
MergeSort( A, mid+1, right);
Merge( A, left, mid, right );
}
}
int main(){
int N;
int* A;
in >> N;
A = new int[N];
for( int i = 0; i < N; i++ )
in >> A[i];
MergeSort( A, 0, N-1);
for( int i = 0; i < N; i++ )
out << A[i]<<" ";
return 0;
}