Pagini recente » Cod sursa (job #2480817) | Cod sursa (job #2625181) | Cod sursa (job #113176) | Cod sursa (job #930257) | Cod sursa (job #2901349)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
void merge(int *array, int l, int m, int r) {
int i, j, k, nl, nr;
// size st si dr
nl = m-l+1; nr = r-m;
int larr[nl], rarr[nr];
// stanga
for(i = 0; i<nl; i++)
larr[i] = array[l+i];
// dreapta
for(j = 0; j<nr; j++)
rarr[j] = array[m+1+j];
i = 0; j = 0; k = l;
while(i < nl && j<nr) {
if(larr[i] <= rarr[j]) {
array[k] = larr[i];
i++;
}else{
array[k] = rarr[j];
j++;
}
k++;
}
while(i<nl) {
array[k] = larr[i];
i++; k++;
}
while(j<nr) {
array[k] = rarr[j];
j++; k++;
}
}
void mergeSort(int *array, int l, int r) {
int m;
if(l < r) {
m = l+(r-l)/2;
mergeSort(array, l, m);
mergeSort(array, m+1, r);
merge(array, l, m, r);
}
}
int main() {
int n;
// cout << "n=";
f >> n;
int arr[n];
for(int i = 0; i<n; i++) {
f >> arr[i];
}
mergeSort(arr, 0, n-1);
for(int i = 0; i<n; i++)
g << arr[i] << " ";
// cout << endl;
}