JAVA Implement and test a templated binary search Note that

JAVA

Implement and test a templated binary search. Note that your test program must use at least 2 types of data to prove that search 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 Examples: Bsearch(String) Bsearch(lnteger) 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, key); result = Searchesbsearch(String Array, 0, 10, key); Example Outputs: Integer test array contains: 0 2 4 6 8 10 12 14 16 18 -3 is not in the array -2 is not in the array -1 is not in the array 0 is at index 0 1 is not in the array 2 is at index 1 3 is not in the array 4 is at index 2 String test array contains: apples oranges peaches strawberries watermelons apples is at index 0 plums |is not in the array Process completed

Solution


//Test java program for the generic method bsearch
//Searches.java
public class Searches
{  
   public static void main(String[] args) {
      
      
       Integer[] IntegerArray={0,2,4,6,8,10,12,14,16,18};
       System.out.println(\"Integer test array contains : \");
       print(IntegerArray);
       int result;
              
       result=Searches.<Integer>bsearch(IntegerArray, 0, 10, -3);
       if(result==-1)
           System.out.println(\"-3 is not in the array\");
      
       result=Searches.<Integer>bsearch(IntegerArray, 0, 10, -2);
       if(result==-1)
           System.out.println(\"-2 is not in the array\");
      
       result=Searches.<Integer>bsearch(IntegerArray, 0, 10, -1);
       if(result==-1)
           System.out.println(\"-1 is not in the array\");
      
       result=Searches.<Integer>bsearch(IntegerArray, 0, 10, 0);
       if(result!=-1)
           System.out.println(\"0 is at index \"+result);
      
       result=Searches.<Integer>bsearch(IntegerArray, 0, 10, 1);
       if(result==-1)
           System.out.println(\"1 is not in the array \");
      
       result=Searches.<Integer>bsearch(IntegerArray, 0, 10, 2);
       if(result!=-1)
           System.out.println(\"2 is at index \"+result);
      
       result=Searches.<Integer>bsearch(IntegerArray, 0, 10, 3);
       if(result!=-1)
           System.out.println(\"3 is at index \"+result);
      
       result=Searches.<Integer>bsearch(IntegerArray, 0, 10, 4);
       if(result!=-1)
           System.out.println(\"4 is at index \"+result);
      
      
       String[] StringArray={\"apples\",\"oranges\",\"peaches\",
               \"strawberries\",\"watermelons\"};
      
       System.out.println(\"String test array contains\");
       print(StringArray);
      
       result=Searches.<String>bsearch(StringArray, 0, 5, \"apples\");
       if(result!=-1)
           System.out.println(\"apples is at index \"+result);
      
       result=Searches.<String>bsearch(StringArray, 0, 5, \"plums\");
       if(result==-1)
           System.out.println(\"plums is not in the array\");
      
      
   }
  
   //helper method that prints the elements of array T
   public static <T> void print(T[] a)
   {
       for (int i = 0; i < a.length; i++)
       {
           System.out.print(a[i]+\" \");
       }
      
       System.out.println();
   }
  
  
   /**
   * Template binarySearch
   * Input: generic array,T, first and last,key
   * Output : -1 if not found or returns index of element
   *
   * */
   public static <T extends Comparable<T>>
   int bsearch(T[] a, int first, int last,T key) {
          
       if (first < last) {
                int mid = first + (last - first) / 2;
                if (key.compareTo(a[mid])<0) {
                    return bsearch(a, first, mid, key);
                   
                } else if (key.compareTo(a[mid])>0) {
                    return bsearch(a, mid+1, last , key);
                   
                } else {
                    return mid;
                }
            }
            return -1;
       } // binarySearch  
}


Sample Output:

Integer test array contains :
0 2 4 6 8 10 12 14 16 18
-3 is not in the array
-2 is not in the array
-1 is not in the array
0 is at index 0
1 is not in the array
2 is at index 1
4 is at index 2
String test array contains
apples oranges peaches strawberries watermelons
apples is at index 0
plums is not in the array

JAVA Implement and test a templated binary search. Note that your test program must use at least 2 types of data to prove that search is templated. Templating m
JAVA Implement and test a templated binary search. Note that your test program must use at least 2 types of data to prove that search is templated. Templating m
JAVA Implement and test a templated binary search. Note that your test program must use at least 2 types of data to prove that search is templated. Templating m

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site