0

I want to find the value x from two array, but something wrong is going on in my code. Can someone help me

https://code.sololearn.com/c5Ijy77278Yl/?ref=app

3rd Apr 2021, 6:14 AM
hanan alhinai
hanan alhinai - avatar
3 odpowiedzi
+ 2
This from your binarySearch function is very weird. What are you searching for? The x or 15 isn't passed to binarySearch and you don't compare with 15 anywhere. You just compare the sum of 2 elements with 0 here: int sum = arr[l] + arr[r]; if(sum == 0) return true; The following implements binarySearch as a binary search algorithm and should do what you expect. Some changes are: - the following has a target or a needle to find. This is needed for any kind of search. Notice the extra "target" parameter in binarySearch method. - the following narrows search interval in halfs every time until finding the target or failing to find it. Splitting the range in half is why it is called binary. Here's the code: public class Program { public static void main(String[] args) { int arr1[] = {-10, -9, 1, 3, 8, 9, 11}; int arr2[] = {-10, -6, -4, 1, 3, 12, 14, 15}; int x = 15; if (binarySearch(x, arr1, 0, arr1.length-1)) System.out.println(x + " Exists in array1"); else System.out.println(x + " Doesn't Exists in array1"); if (binarySearch(x, arr2, 0, arr2.length-1)) System.out.println(x + " Exists in array2"); else System.out.println(x + " Doesn't Exists in array2"); } public static boolean binarySearch(int target, int arr[], int l, int r){ int mid = (l + r) / 2; if(arr[mid] == target) return true; else if (r <= l) return false; else if(arr[mid] > target) return binarySearch(target, arr, l, mid - 1); else return binarySearch(target, arr, mid + 1, r); } }
3rd Apr 2021, 6:29 AM
Josh Greig
Josh Greig - avatar
0
hanan code: int arr1[] = {-10, -9, 1, 3, 8, 9, 11}; int arr2[] = {-10, -6, -4, 1, 3, 12, 14, 15}; l, r, sum -10 11 1 -10 9 -1 -9 9 0 15 Exists in array1 -10 15 5 -10 14 4 -10 12 2 -10 3 -7 -6 3 -3 -4 3 -1 1 3 4 1 1 2 1 -4 -3 15 Doesn't Exists in array2
3rd Apr 2021, 6:51 AM
zemiak