A Problem in Many Binary Search Implementations - GeeksforGeeks
int binarySearch(int arr[], int l, int r, int x){ while (l <= r) { // find index of middle element int m = (l+r)/2; // may overflow: during code interview, extract this as method // Check if x is present at mid if (arr[m] == x) return m; // If x greater, ignore left half if (arr[m] < x) l = m + 1; // If x is smaller, ignore right half else r = m - 1; } // if we reach here, then element was not present return -1;}int mid = low + ((high - low) / 2);
Probably faster, and arguably as clear is (works only in Java, refer this):
int mid = (low + high) >>> 1;Read full article from A Problem in Many Binary Search Implementations - GeeksforGeeks