[英]How do i create a loop that implement a recursive binary search to search for n numbers in a array? JAVA
我的代码仅打印一个数字,我该如何创建一个循环来搜索n个数字?
package binariarecursiva;
导入java.util.Scanner; / ** * * @author用户* /公共类BinariaRecursiva {
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
int[] array = {1, 3, 5, 6, 8, 12, 19, 21, 27, 31, 35, 45, 80, 81, 82, 85, 87, 89, 95, 101, 200, 501, 707, 1000};
Scanner teclado = new Scanner(System.in);
int n = teclado.nextInt();
int x = teclado.nextInt();
int esquerda = 0;
int direita = array.length-1;
System.out.println(buscaBinaria(array, esquerda, direita, x, n));
}
public static int buscaBinaria (int[] array, int esquerda, int direita, int x, int n)
{
int meio = (esquerda + direita)/2;
if(direita < esquerda)
{
return -1;
}
if(x==array[meio])
{
return meio;
}
else if(x<array[meio])
{
return buscaBinaria(array, esquerda, meio - 1, x);
}
else
{
return buscaBinaria(array, meio + 1, direita, x);
}
}
}
您只需要稍微更改main()
方法即可。 首先,您已经从用户输入中读取了n的值。 然后,您循环n次,并在每次迭代中询问用户他想要搜索什么样的价值。
public static void main(String[] args)
{
int[] array = {1, 3, 5, 6, 8, 12, 19, 21, 27, 31, 35, 45, 80, 81, 82, 85, 87, 89, 95, 101, 200, 501, 707, 1000};
Scanner teclado = new Scanner(System.in);
System.out.print("Enter number of runs: ");
int n = teclado.nextInt();
int esquerda = 0;
int direita = array.length-1;
for(int i = 0; i < n; i++) {
System.out.print("Enter number to search for: ");
int x = teclado.nextInt();
System.out.println(buscaBinaria(array, esquerda, direita, x));
}
}
还要更改buscaBinaria()
的签名,它不需要n作为参数。
完整代码
package binariarecursiva;
import java.util.Scanner;
public class BinariaRecursiva {
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
int[] array = {1, 3, 5, 6, 8, 12, 19, 21, 27, 31, 35, 45, 80, 81, 82, 85, 87, 89, 95, 101, 200, 501, 707, 1000};
Scanner teclado = new Scanner(System.in);
System.out.print("Enter number of runs: ");
int n = teclado.nextInt();
int esquerda = 0;
int direita = array.length-1;
for(int i = 0; i < n; i++) {
System.out.print("Enter number to search for: ");
int x = teclado.nextInt();
System.out.println(buscaBinaria(array, esquerda, direita, x));
}
}
public static int buscaBinaria (int[] array, int esquerda, int direita, int x)
{
int meio = (esquerda + direita)/2;
if(direita < esquerda)
{
return -1;
}
if(x==array[meio])
{
return meio;
}
else if(x<array[meio])
{
return buscaBinaria(array, esquerda, meio - 1, x);
}
else
{
return buscaBinaria(array, meio + 1, direita, x);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.