Алгоритми та структури даних · Middle · Запитання 14 з 75
Чому в багатьох мовах радять mid = lo + Math.floor((hi - lo) / 2) замість (lo + hi) / 2?
- ✓Правильна відповідь:
lo + hiможе переповнити ціле фіксованої ширини - 2Ділення на процесорі повільніше за віднімання
- 3Перша форма завжди округлює результат угору
Пояснення
У Java чи C++ із 32-бітними int lo + hi може перевищити максимум і стати від'ємним. Числа в JavaScript - double, тож для індексів масиву це не практична проблема, але звичку варто знати.