我头痛得很厉害。
我正在数组中执行搜索,我希望它指示数组中元素的位置,到目前为止一切都很好。
其实代码一眼看不出来报错,但是使用的时候,一切都红红火火。
我的代码由一个名为数组的包内的两个类(主类和搜索类)组成,让您处于一种情况。
搜索代码:
package busqueda;
public class busqueda {
public int buscar(int numeros[], int n) {
int principio, fin, centro;
principio = 0;
centro = numeros.length / 2;
fin = numeros.length - 1;
boolean encontrado = false;
while (principio <= fin || !encontrado) {
if (numeros[centro] == n) {
encontrado = true;
} else if (numeros[centro] < n) {
centro = -1;
} else {
centro = +1;
}
}
if (encontrado) {
return centro;
}
return 0;
}
}
现在主要代码:
package busqueda;
import busqueda.busqueda;
import java.util.*;
public class main {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
busqueda busca = new busqueda();
int numeros[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int pos = busca.buscar(numeros, 8);
if (pos > -1) {
System.out.println("Encontrado en la posicion: " + pos);
} else {
System.out.println("Error");
}
}
}
一切似乎都计划得很好,但是在执行练习时,我得到以下信息:
我想问题出在搜索类中,但我看不到,希望有人能帮助我。
代码中出现的算法不是递归的,而是迭代的;递归算法必须包括对自身的调用。
递归算法
如果函数在其递归变体中
buscar
表示二进制搜索算法,则代码应类似于以下内容:迭代算法
另一方面,如果问题的标题不正确,并且您想使用问题正文中包含的迭代变体,则代码应类似于以下内容:
已有算法
除了可能的爱好或算法练习之外,使用已经包含在 Java 编程语言标准库中的版本会更合适:
有关详细信息,请参阅
Arrays.binarySearch(int[], int)
Java 文档。