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

**** In Java with detailed comments **** **** Must match the example output ****

ID: 3734227 • Letter: #

Question

**** In Java with detailed comments ****

**** Must match the example output ****

^^^ **** Must match the example output ****

Assignment 8 Implement and test a templated binary search. Note that your test program must use at least 2 types of data to prove that bsearch is templated Templating means that instead of passing a parameter such as Integer you pass a parameter T. (T is a type variable and can be named anything). This means that you can call bsearch with different types of objects Pseudo Code Example Bsearch(String) Bsearch(Integer) This means you do not have to write 2 separate bsearch methods, one for String and one for Integer The heart of how this is accomplished is the Comparable interface. If a class implements Comparable, it defines less than, greater than and equals. Also, by making the type variable you can call with any object that implements Comparable Example Code public class Searches public static int bsearch (T a, int first, int last, T key) called in main as: result = Searches .bsearch (IntegerArray, 0, 10, resultSearchesbsearch (StringArray,0,10, key) key); Example Output: Configuration:

Explanation / Answer

public class Search {

   public static <T extends Comparable<T>> int bsearch(T[] array, int lo, int hi,T value) {
       if (lo < hi) {
           int mid = (lo+ hi)/2;
           int cmp = value.compareTo(array[mid]);
           if (cmp < 0) return bsearch(array, lo, mid - 1, value);
           if (cmp > 0) return bsearch(array, mid + 1, hi, value);
           return mid;
       } // if
       return -1;
   } // binarySearch
  
  
   public static void main(String[] args) {
      
       Integer[] arr= {1,2,3,4,5,6,7,8,9};
      
       System.out.println("Integer test array contains: ");
       for(int i=0; i<arr.length; i++)
           System.out.print(arr[i]+" ");
       System.out.println();
      
       int index = bsearch(arr, 0, arr.length-1, 2);
       if(index != -1) {
           System.out.println("2 is at index "+index);
       }else{
           System.out.println("2 is not in the array");
       }
       index = bsearch(arr, 0, arr.length-1, 12);
       if(index != -1) {
           System.out.println("12 is at index "+index);
       }else{
           System.out.println("12 is not in the array");
       }
  
       index = bsearch(arr, 0, arr.length-1, -2);
      
       index = bsearch(arr, 0, arr.length-1, 12);
       if(index != -1) {
           System.out.println("-2 is at index "+index);
       }else{
           System.out.println("-2 is not in the array");
       }
      
       System.out.println();
       String[] arr1 = {"apple", "ballon","kamala", "mango","zinc" };
       System.out.println("String test array contains: ");
       for(int i=0; i<arr1.length; i++)
           System.out.print(arr1[i]+" ");
       System.out.println();
      
       index = bsearch(arr1, 0, arr1.length-1, "cat");
       if(index != -1) {
           System.out.println("cat is at index "+index);
       }else{
           System.out.println("cat is not in the array");
       }
      
       index = bsearch(arr1, 0, arr1.length-1, "mango");
       if(index != -1) {
           System.out.println("mango is at index "+index);
       }else{
           System.out.println("mango is not in the array");
       }
      
   }

}

/*
Sample run:
Integer test array contains:
1 2 3 4 5 6 7 8 9
2 is at index 1
12 is not in the array
-2 is not in the array

String test array contains:
apple ballon kamala mango zinc
cat is not in the array
mango is at index 3

*/