Pagini recente » Cod sursa (job #2988431) | Cod sursa (job #1904957) | Cod sursa (job #1625538) | Cod sursa (job #19230) | Cod sursa (job #2901377)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
using namespace std;
const int N = 1e5 + 100;
int arr[N];
int sol[N];
void mergeSort(int st, int ed);
//
//int main() {
// int n;
// cin >> n;
// for (int i = 0; i < n; ++i)
// cin >> arr[i];
//
// mergeSort(0, n -1);
//
// for (int i = 0; i < n; ++i)
// cout << sol[i] << " ";
// return 0;
//}
int main() {
int n;
in >> n;
for (int i = 0; i < n; ++i)
in >> arr[i];
mergeSort(0, n);
for (int i = 0; i < n; ++i)
out << arr[i] << " ";
return 0;
}
// 3 2 12 22
// 3 2 - 12 22
// 3 - 2 - 12 - 22
// 0 - 1 - 2 - 3
// 2 - 3
// 12 - 22
// 4
// 22 12 3 2
//33 -4 33 -23 3399
void mergeSort(int st, int ed) {
if (st == ed)
return;
int mid = (st + ed) / 2;
mergeSort(st, mid);
mergeSort(mid + 1, ed);
int i = st;
int j = mid + 1 ;
int k = st;
while (i <= mid && j <= ed) {
if (arr[i] > arr[j])
sol[k] = arr[j], j++;
else
sol[k] = arr[i], i++;
k++;
}
// cout << "i: " << i << " " << "j: " << j << endl;
while (i <= mid) {
sol[k] = arr[i];
i++, k++;
}
while (j <= ed) {
sol[k] = arr[j];
j++, k++;
}
for( int i = st ; i <= ed; ++i){
arr[i] = sol[i];
}
}