Witam, prosiłbym kogoś doświadczonego w programowaniu aby potwierdził lub naprowadził mnie na dobrą drogę otóż:
Własnie analizuję kod mergeSort ze strony:
https://www.geeksforgeeks.org/merge-sort/
I zastanawiam się nad informacją którą tam znalazłem:
void mergeSort(int arr[], int l, int r)
{
if (l < r)
{
// Same as (l+r)/2, but avoids overflow for
// large l and h
int m = l+(r-l)/2;
// Sort first and second halves
mergeSort(arr, l, m);
mergeSort(arr, m+1, r);
merge(arr, l, m, r);
}
}
Chodzi mi dokładnie o komentarz // Same as (l+r)/2, but avoids overflow for large l and h
Czy overflow oznacza przypadek w którym użyjemy funkcji do posortowania bardzo dużych tablic i ich indeksy będą mieć bardzo duże wielkości których nie pomieści nam typ danych int dla liczb całkowitych który może przechować dodatnie i ujemne liczby całkowite o wartości około 2 miliardów (znam wzór ale aby było szybciej nie będe o nim pisał i nie jest to istotą mojego pytania ) i w pewnym przypadku po dodaniu 2 zmiennych int przechowujących wartości których suma przekroczy tak zwaną pojemność maksymalną int'a ???
(A ta metoda zabezpiecza nas przed tym problemem powyżej)
Czy to nazywamy w programowaniu sytuację jako overflow ??? :
int a = 2000000000;
int b = 2000000000;
int c = INT_MAX;
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << a+b << std::endl;
std::cout << c << std::endl;