Pagini recente » Cod sursa (job #1736553) | Cod sursa (job #1601374) | Cod sursa (job #2573683) | Cod sursa (job #1475692) | Cod sursa (job #2617631)
#include<iostream>
#include <fstream>
using namespace std;
ifstream f ("algsort.in.txt");
ofstream g ("algsort.out.txt");
void swapping(int &a, int &b) {
int temp;
temp = a;
a = b;
b = temp;
}
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>>V[i];
mergeSort(V, 0, n-1);
for(i=1; i<=n; i++)
g<<V[i];
}