Pagini recente » Cod sursa (job #157088) | Cod sursa (job #2114245) | Cod sursa (job #2202421) | Statistici Raluca Gabriela Jelescu (raluca999) | Cod sursa (job #2617605)
#include<iostream>
#include <fstream>
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
void swapping(int &a, int &b) {
temp = a;
a = b;
b = temp;
}
void display(int *array, int size) {
for(int i = 0; i<size; i++)
cout << array[i] << " ";
}
void Merge(int *array, int l, int m, int r) {
int i, j, p, nl, nr;
nl = m-l+1; nr = r-m;
int leftArr[nl], rightArr[nr];
for(i = 0; i<nl; i++)
leftArr[i] = array[l+i];
for(j = 0; j<nr; j++)
rightArr[j] = array[m+1+j];
i = 0; j = 0; p = l;
while(i < nl && j<nr) {
if(leftArr[i] <= rightArr[j]) {
array[p] = leftArr[i];
i++;
}else{
array[p] = rightArr[j];
j++;
}
p++;
}
while(i<nl) {
array[p] = leftArr[i];
i++; p++;
}
while(j<nr) {
array[p] = rightArr[j];
j++; p++;
}
}
void mergeSort(int *array, int l, int r) {
int m;
if(l < r) {
int m = l+(r-l)/2;
mergeSort(array, l, m);
mergeSort(array, m+1, r);
Merge(array, l, m, r);
}
}
int main() {
int V[1000000];
int n, i;
f>>n;
for(i=1; i<=n; i++)
f>>a[i];
mergeSort(V, 0, n-1);
display(V, n)
}