Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

indent CLnt level 0, i ‘ level, i.. ) for (int i System.out public stat i. Int b

ID: 3689851 • Letter: I

Question

indent CLnt level 0, i ‘ level, i.. ) for (int i System.out public stat i. Int bin search-(Int », Int 10. inthlgh, tetkey, ist 1. Int widj indent (level)i if (low high) " level ")"); id-(low high)2 indent Cleve I ) ;-Syst e. out.pr intIn(_si.- .-14) Indent ( level): System out.printin"nid-Inid]): ia); indent (level): System.out.printi(keyxld) indent(level): System.out.printlnt"returnmid) return mid else if (key>x id]) indent(level); System.out . printin("key>"Id)"); result -binse arch(x, nid + 1, high, key, level+ i) indent (level); System out.printintretsut return result else I/ key

Explanation / Answer

public class Recursion
{
   public static void indent(int level)
   {
       for (int i=0; i<level;i++ )
           System.out.println(" ");
   }

   public static int binsearch(int[] x, int low,int high,int key,int level)
   {
       int mid;
       int result;

       indent(level);
       System.out.println("binsearch[x, low = " + low + ", high = " + high + ", key = " + key + ", level = " + level + ")");

       if(low<high)
       {
           mid = (low+high)/2;
           indent(level);
           System.out.println("mid = " + mid);
           indent(level);
           System.out.println("x[mid] = " + x[mid]);

           if(key == x[mid])
           {
               indent(level);
               System.out.println("key == x[mid]");
               indent(level);
               System.out.println("return " + mid);
               return mid;
           }

           else if( key > x[mid])
           {
               indent(level);
               System.out.println("key > x[mid]");
               result = binsearch(x,mid+1,high,key,level+1);
               indent(level);
               System.out.println("return " + result);
               return result;
           }

           else
           {
               indent(level);
               result = binsearch(x,low,mid-1,key,level+1);
               indent(level);
               System.out.println("return " + result);
               return result;
           }
       }
       else
       {
           indent(level);
           System.out.println("return -1");
           return -1;
       }

   }
      
   public static void main(String[] args)
       {
           final int size = 10;
           int[] a = new int[size];
           for (int i =0;i<size ;i++ ) {
               a[i] = i;
           }
           int key=7;
           System.out.println("Value " + key + " is at index " + binsearch(a,0,size-1,key,0));
       }
}

OUTPUT:
binsearch[x, low = 0, high = 9, key = 7, level = 0)
mid = 4
x[mid] = 4
key > x[mid]
  
binsearch[x, low = 5, high = 9, key = 7, level = 1)
  
mid = 7
  
x[mid] = 7
  
key == x[mid]
  
return 7
return 7
Value 7 is at index 7