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.

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
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
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education