From ee9920fbb86b37bdf38f429728327e08246a20ff Mon Sep 17 00:00:00 2001 From: Nitin Chauhan <0nitinchauhan@gmail.com> Date: Thu, 14 Feb 2019 05:07:30 +0530 Subject: [PATCH] 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 --- .../search-algorithms/binary-search/index.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/guide/english/algorithms/search-algorithms/binary-search/index.md b/guide/english/algorithms/search-algorithms/binary-search/index.md index 590852b2ee..925156eab2 100644 --- a/guide/english/algorithms/search-algorithms/binary-search/index.md +++ b/guide/english/algorithms/search-algorithms/binary-search/index.md @@ -261,7 +261,7 @@ int binarySearch(int[] arr, int start, int end, int element) { while(start <= end) { - int mid = ( start + end ) / 2; + int mid = start + ( end - start ) / 2; if(arr[mid] == element) return mid; if(arr[mid] < element) @@ -276,18 +276,18 @@ int binarySearch(int[] arr, int start, int end, int element) // Recursive Approach in Java int binarySearch(int[] arr, int start,int end , int element) { - if(start <= end) - { - int mid = ( start + end ) / 2; - if(arr[mid] == element) - return mid; - if(arr[mid] < element) - return binarySearch( arr , mid + 1 , end , element ); - else - return binarySearch( arr, start, mid - 1 , element); - } - return -1; - } + if (end >= start) + { + int mid = start + ( end - start ) / 2; + if(arr[mid] == element) + return mid; + if(arr[mid] < element) + return binarySearch( arr , mid + 1 , end , element ); + else + return binarySearch( arr, start, mid - 1 , element); + } + return -1; +} ```