void mergeSort(long long int *arr, long long int l, long long int r)
{
    if (l < r)
    {
        int m = l+(r-l)/2; //Same as (l+r)/2, but avoids overflow for large l and h
        mergeSort(arr, l, m);
        mergeSort(arr, m+1, r);
        merging(arr, l, m, r);
    }
}
void merge(int *A, int min, int max)
{
	int mid;
	if (min<max)
	{ 
	mid = (min + max) / 2;
	merge(A, min, mid);
	merge(A, mid + 1, max);
	merging(A, min, mid, max);
	}
}
Esempio n. 3
0
void sort(int low, int high) {
   int mid;
   
   if(low < high) {
      mid = (low + high) / 2;
      sort(low, mid);
      sort(mid+1, high);
      merging(low, mid, high);
   }else { 
      return;
   }   
}