Need help fixing some issues with a project. PLEASE read below Write a Java program that implements both Linear Search and Binary Search. The program will take a collection of objects (generic type data) as input and print the number of comparisons needed to find a target element within that collection. You will create the following two Java classes: 1. SearchCombo.java : Code for both linearSearch and binarySearch will be in this class. You may take help from the textbook Chapter 9, Section 9.1. However, note that the design requirements are different from the textbook code. •Both search methods must use the Comparable interface and the compareTo() method. •Your program must be able to handle different data types, i.e., use generics. •For binarySearch, if you decide to use a midpoint computation formula that is different from the textbook, explain that formula briefly as a comment within your code. 2. Tester.java : This class will contain the main() method. The user will be asked to enter the collection of elements (comma or space can be used to separate the elements). The output will be the number of comparisons the two searching techniques require. //my code import java.util.*; class Search{   public < E extends Comparable < E >> int binarySearch(E[] arr, E elem, int low, int high){      Arrays.sort(arr);     int step = 0;     while (low <= high){       int mid = (high + low) / 2;       if (arr[mid].compareTo(elem) == 0){         step++;         System.out.println("# of comparisons for binary search: " + step);         return mid;       }        else if (low >= high){         return -1;       }       else if (arr[mid].compareTo(elem) < 0){         step++;         low = mid + 1;       }       else if (arr[mid].compareTo(elem) > 0){         step++;         high = mid - 1;       }     }     return -1;   }   public < E extends Comparable < E >> int linearSearch(E[] arr, E elem, int low, int high){     int step = 0;     for (int i = 0; i < arr.length; i++){       step++;       if (elem.compareTo(arr[i]) == 0){         System.out.println("# of comparisons for linear search: " + step);         return i;       }     }     return -1;   } } public class SearchCombo{   public static void main(String[] args) throws java.lang.Exception{     Scanner input = new Scanner(System.in);     System.out.print("Enter the number of element of the array: ");     int n = input.nextInt();     Integer[] array = new Integer[n];     System.out.println("Enter the elements (search pool): ");     for (int i = 0; i < n; i++)       array[i] = input.nextInt();     Search obj = new Search();     int flag = 1;     while (flag == 1) {       System.out.println("Enter target: ");       Integer element = input.nextInt();       int res1 = obj.binarySearch(array, element, 0, n - 1);       int res2 = obj.linearSearch(array, element, 0, n - 1);       if (res1 == -1 && res2 == -1)         System.out.println("Unable to find the element in the array :(");       System.out.println("press 0 to exit else press 1 to continue: ");       flag = input.nextInt();     }   } } //need help fixing getting the number of comparisons.

C++ Programming: From Problem Analysis to Program Design
8th Edition
ISBN:9781337102087
Author:D. S. Malik
Publisher:D. S. Malik
Chapter18: Stacks And Queues
Section: Chapter Questions
Problem 16PE: The implementation of a queue in an array, as given in this chapter, uses the variable count to...
icon
Related questions
Question

//Need help fixing some issues with a project. PLEASE read below

Write a Java program that implements both Linear Search and Binary Search. The program will take a collection of objects (generic type data) as input and print the number of comparisons needed to find a target element within that collection. You will create the following two Java classes:
1. SearchCombo.java : Code for both linearSearch and binarySearch will be in this class. You may take help from the textbook Chapter 9, Section 9.1. However, note that the design requirements are different from the textbook code.
•Both search methods must use the Comparable<T> interface and the compareTo() method.
•Your program must be able to handle different data types, i.e., use generics.
•For binarySearch, if you decide to use a midpoint computation formula that is different from the textbook, explain that formula briefly as a comment within your code.

2. Tester.java : This class will contain the main() method. The user will be asked to enter the collection of elements (comma or space can be used to separate the elements). The output will be the number of comparisons the two searching techniques require.

//my code

import java.util.*;
class Search{
  public < E extends Comparable < E >> int binarySearch(E[] arr, E elem, int low, int high){ 
    Arrays.sort(arr);
    int step = 0;
    while (low <= high){
      int mid = (high + low) / 2;
      if (arr[mid].compareTo(elem) == 0){
        step++;
        System.out.println("# of comparisons for binary search: " + step);
        return mid;
      } 
      else if (low >= high){
        return -1;
      }
      else if (arr[mid].compareTo(elem) < 0){
        step++;
        low = mid + 1;
      }
      else if (arr[mid].compareTo(elem) > 0){
        step++;
        high = mid - 1;
      }
    }
    return -1;
  }
  public < E extends Comparable < E >> int linearSearch(E[] arr, E elem, int low, int high){
    int step = 0;
    for (int i = 0; i < arr.length; i++){
      step++;
      if (elem.compareTo(arr[i]) == 0){
        System.out.println("# of comparisons for linear search: " + step);
        return i;
      }
    }
    return -1;
  }
}
public class SearchCombo{
  public static void main(String[] args) throws java.lang.Exception{
    Scanner input = new Scanner(System.in);
    System.out.print("Enter the number of element of the array: ");
    int n = input.nextInt();
    Integer[] array = new Integer[n];
    System.out.println("Enter the elements (search pool): ");
    for (int i = 0; i < n; i++)
      array[i] = input.nextInt();
    Search obj = new Search();
    int flag = 1;
    while (flag == 1) {
      System.out.println("Enter target: ");
      Integer element = input.nextInt();
      int res1 = obj.binarySearch(array, element, 0, n - 1);
      int res2 = obj.linearSearch(array, element, 0, n - 1);
      if (res1 == -1 && res2 == -1)
        System.out.println("Unable to find the element in the array :(");
      System.out.println("press 0 to exit else press 1 to continue: ");
      flag = input.nextInt();
    }
  }
}

//need help fixing getting the number of comparisons.

Expert Solution
steps

Step by step

Solved in 2 steps with 1 images

Blurred answer
Knowledge Booster
Array
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning