Pagini recente » Cod sursa (job #769187) | Cod sursa (job #2390561) | Cod sursa (job #1392437) | Cod sursa (job #2789347) | Cod sursa (job #2122906)
#include<fstream>
using namespace std;
void merge(int kp, int mid, int vp, int *x) {
int *temp = new int [vp - kp + 1];
for (int i = 0;i <= vp - kp;++i)
temp[i] = x[i + kp];
int i=0, j = (mid-kp)+1, k = kp;
while (i <= (mid - kp) && j <= (vp - kp)) {
if (temp[i] < temp[j]) {
x[k] = temp[i];
i++;
}
else {
x[k] = temp[j];
j++;
}
k++;
}
while (i <= (mid - kp)) {
x[k] = temp[i];
i++;k++;
}
while (j <= (vp - kp)) {
x[k] = temp[j];
j++;k++;
}
}
void mergeSort(int kp, int vp, int *x) {
if (kp >= vp) return;
int mid = (vp - kp) / 2 + kp;
mergeSort(kp, mid, x);
mergeSort(mid+1, vp, x);
merge(kp, mid, vp, x);
}
int main() {
ifstream in("algsort.in");
ofstream out("algsort.out");
int n;
in >> n;
int *x = new int[n];
for (int i = 0;i < n;++i)
in >> x[i];
mergeSort(0, n - 1, x);
for (int i = 0;i < n;++i)
out << x[i] << " ";
}