Avoiding overflow in getting mid index in Java (#25211)

* Avoiding overflow in getting mid index in Java

start + (end - start)/2 is preferable over (start + end)/2 to avoid overflow errors

* Update index.md
This commit is contained in:
Nitin Chauhan
2019-02-14 05:07:30 +05:30
committed by Randell Dawson
parent 7d30fdbe3a
commit ee9920fbb8

View File

@ -261,7 +261,7 @@ int binarySearch(int[] arr, int start, int end, int element)
{ {
while(start <= end) while(start <= end)
{ {
int mid = ( start + end ) / 2; int mid = start + ( end - start ) / 2;
if(arr[mid] == element) if(arr[mid] == element)
return mid; return mid;
if(arr[mid] < element) if(arr[mid] < element)
@ -276,18 +276,18 @@ int binarySearch(int[] arr, int start, int end, int element)
// Recursive Approach in Java // Recursive Approach in Java
int binarySearch(int[] arr, int start,int end , int element) int binarySearch(int[] arr, int start,int end , int element)
{ {
if(start <= end) if (end >= start)
{ {
int mid = ( start + end ) / 2; int mid = start + ( end - start ) / 2;
if(arr[mid] == element) if(arr[mid] == element)
return mid; return mid;
if(arr[mid] < element) if(arr[mid] < element)
return binarySearch( arr , mid + 1 , end , element ); return binarySearch( arr , mid + 1 , end , element );
else else
return binarySearch( arr, start, mid - 1 , element); return binarySearch( arr, start, mid - 1 , element);
} }
return -1; return -1;
} }
``` ```