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:
committed by
Randell Dawson
parent
7d30fdbe3a
commit
ee9920fbb8
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user