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.
//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.
Step by step
Solved in 2 steps with 1 images