Cod sursa(job #3000164)

Utilizator AnaRosuAna Maria Rosu AnaRosu Data 12 martie 2023 01:33:50
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
// // 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;
}