Pagini recente » Cod sursa (job #2228130) | Cod sursa (job #3166367) | Cod sursa (job #732492) | Cod sursa (job #3163587) | Cod sursa (job #3000164)
// // O(nlogn)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
void merge(int arr[], int left, int mid, int right)
{ int arr_size = sizeof(arr) / sizeof(arr[0]);
int temp[arr_size];
int index1 = left, index2 = mid+1;
int index3 = left;
while (index1 <= mid && index2 <= right) {
if (arr[index1] <= arr[index2])
temp[index3++] = arr[index1++];
else
temp[index3++] = arr[index2++];
}
while (index1 <= mid)
temp[index3++] = arr[index1++];
while (index2 <= right)
temp[index3++] = arr[index2++];
for(int i = left; i<= right; i++)
arr[i] = temp[i];
}
void mergeSort(int arr[], int left, int right){
if (left >= right)
return;
int mid = left + (right - left) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
// Driver code
int main(){
int n;
f>>n;
int v[n];
for(int i=0; i<n; ++i)
f>>v[i];
f.close();
mergeSort(v,0,n-1);
for(int i=0; i<n; ++i)
g<<v[i]<<" ";
g.close();
return 0;
}