binarySearch(int[] arr, int value){ int left = 0; int right = arr.length - 1; int middle; while (right >= left){ middle = (left+right)/2; if (value == arr[middle]) return true; else { if (value < arr[middle]) right = middle-1; else left = middle+1; } } return false; }What is the worst case time complexity of this algorithm (in terms of big-Oh)?