Я хочу реализовать бинарный поиск, и у меня есть три метода для этого. Я хочу вывести количество рекурсивных вызовов, необходимых для конкретного фактора.
Коэффициент два означает, что пространство поиска делится на половину на каждом шаге рекурсии. * Коэффициент три означает, что пространство поиска делится на одну треть и две трети на каждом шаге рекурсии. * В каждом случае предполагается целочисленное деление, что означает, что дроби округляются в меньшую сторону.
Я не знаю, как назвать конкретный элемент списка стогом сена. Как правильно реализовать три метода класса BinarySearch и как реализовать основной класс для ввода числа и количества рекурсивных вызовов?
Вот класс BinarySearch:
package u8a1;
import java.util.List;
public class BinarySearch<Key extends Comparable<Key>, Value> implements IBinarySearch<Key, Value>, IMeasure {
public Key key;
public Value value;
public BinarySearch() {
this.key = key;
this.value = value;
}
public Value find(List<Unit<Key, Value>> haystack, Key needle)
{
//return haystack.isEmpty() ? null : haystack.get(0).value;
int m, li, re;
li = 0;
re = haystack.size();
//if ()
return value;
}
/**
* Set the factor for the binary search.
*
* A factor of two means that the search space is split into half-half in each recursion step.
* A factor of three means that the search space is split into one third and two thirds in each recursion step.
* In each case integer division is assumed, which means fractions are rounded down.
*
* This method is called first after instantiation.
*
* @param factor
* an integer value
*/
public void setFactor(int factor)
{
//int m, li, re;
//li = 0; re = haystack.size();
//getNumberofCalls()
return;
}
public int getNumberofCalls()
{
return 1/* + getNumberofCalls()*/;
}
}
Вот основной класс:
package u8a1;
/**
* Main class of the Java program.
*
*/
import java.util.Scanner;
//...
class Scan{
Scanner in = new Scanner(System.in);
int num = in.nextInt();
}
public class Main {
public static void main(String[] args) {
// we print a heading and make it bigger using HTML formatting
System.out.println("<h4>-- Binaere Suche --</h4>");
int anzahl = 0;
//zahl.Scan();
Scanner in = new Scanner(System.in);
int num = in.nextInt();
}
}
Скажите, нужны ли вам оба интерфейса и класс Unit, но в классе BinarySearch у меня один и тот же конструктор.