Почему значение переменной "max" равно -101?

Почему изначальное значение переменной max задано как -101, а не 0 в этом решении?
  • 28 января 2024 г. 13:38
Ответы на вопрос 2
Вероятно, это часть программы, где идет поиск максимального значения в наборе данных. Переменная `max` используется для хранения наибольшего найденного числа, и ее начальное значение задается как -101 по одной из следующих причин:

1. Набор данных содержит отрицательные числа, и автор кода хочет удостовериться, что любое число из набора данных будет больше, чем начальное значение переменной `max`. Если бы начальное значение было 0, и набор содержал только отрицательные числа, то после выполнения программы максимальное значение осталось бы равным нулю, что было бы неверно.

2. Значение -101 может быть установлено как "страж" (sentinel value), которое является достаточно низким, чтобы быть ниже любого ожидаемого валидного значения в данных. Таким образом, если в конце работы программы переменная `max` останется -101, это может служить индикатором того, что либо в массиве не было ни одного элемента, либо все значения были меньше или равны -101.

3. Это значение может быть выбрано произвольно исходя из знания диапазона данных. Если известно, что все числа в датасете строго больше -101, такое начальное значение гарантирует, что любой элемент данных будет больше него и, соответственно, правильно обновит переменную `max`.

При решении таких задач важно устанавливать начальное значение переменной `max` меньшим, чем самое маленькое возможное число в наборе данных. Если набор данных может потенциально содержать все значения `int` (или другого типа данных, используемого для `max`), то можно использовать минимальное значение этого типа данных, например, для целочисленных значений во многих языках это будет `Integer.MIN_VALUE` в Java или `INT_MIN` в C/C++.
Это же элементарно. Если у вас все числа в массиве отрицательные, а вы инициализировали max нулём, то во всех сравнениях ноль будет больше числа из массива и максимум будет найден неверно. 
При поиске максимума инициализировать надо числом, которое заведомо меньше, чем минимально возможное в массиве.
Похожие вопросы