Pagini recente » Cod sursa (job #2571850) | Cod sursa (job #2894723) | Cod sursa (job #538650) | Cod sursa (job #2928810) | Cod sursa (job #2898338)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int arr[500001];
void interclasare(int stg, int dr, int mij)
{
int i, j, k, c[500001];
i = stg;
k = stg;
j = mij + 1;
while (i <= mij && j <= dr) {
if (arr[i] < arr[j]) {
c[k] = arr[i];
k++;
i++;
}
else {
c[k] = arr[j];
k++;
j++;
}
}
while (i <= mij) {
c[k] = arr[i];
k++;
i++;
}
while (j <= dr) {
c[k] = arr[j];
k++;
j++;
}
for (i = stg; i < k; i++) {
arr[i] = c[i];
}
}
void merge_sort(int stg, int dr)
{
int mij;
if (stg < dr){
mij=(stg+dr)/2;
merge_sort(stg,mij);
merge_sort(mij+1,dr);
interclasare(stg,dr,mij);
}
}
int main()
{
int nr;
f>>nr;
for (int i = 0; i < nr; i++)
{
f>>arr[i];
}
merge_sort(0, nr-1);
for (int i = 0; i < nr; i++)
{
g<<arr[i]<<" ";
}
f.close();
g.close();
return 0;
}