Algorithmen und Datenstrukturen · Middle · Frage 14 von 75
Warum empfiehlt man in vielen Sprachen mid = lo + Math.floor((hi - lo) / 2) statt (lo + hi) / 2?
- 1
lo + hikann ein festes Int überlaufen - 2Division ist langsamer als jede Subtraktion
- 3Die erste Form rundet immer auf
Antwort zeigen
Richtige Antwort: lo + hi kann ein festes Int überlaufen
Erklärung
In Java oder C++ mit 32-Bit-Ints kann lo + hi das Maximum überschreiten und negativ werden. Zahlen in JavaScript sind Doubles, für Array-Indizes ist das also kein praktisches Problem, aber die Gewohnheit lohnt sich.