Please explain how to find the recurrence of the following code. Why is the answer T(6n/7) + O(1) and how I can solve a similar question?
What is the recurrence for the worst-case runtime of the algorithm below?
The following algorithm takes as input a sorted array of integers A.
left and right represent the left and right indicies of the array that is being searched. The parameter x represents an integer.
The algorithm Search searches whether or not x is in the array A. If x is in the array, it returns the index of x. If x is not in the array, it returns -1. The function floor(a) returns the integer part of a. The initial call to Search is Search( A, 1, n, x ).
int Search(A,left,right,x) { numelements = right - left + 1;
if (numelements < 20) {
for (i = 0; i < numelements; i++){
if (A[left + i] == x) return (left + i);
}
return (-1);
} else {
split = floor(numelements * 1/7) + left;
if (A[split] == x) return(split);
if (A[split] > x) return(Search(A,left,split-1,x));
if (A[split] < x) return(Search(A,split,right,x)); } }