在Java二进制搜索 [英] Binary search in java
本文介绍了在Java二进制搜索的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图用Java实现二进制搜索,没有工作...不知道为什么,它总是给我一个错误说多少没有被发现...
我不知道为什么,我没有看到任何错误:•感谢您的帮助...
公共无效busquedaBinaria(INT [] arreglo,诠释buscar){ INT炫酷= 0; //中间
INT劣= 0;
INT优越= arreglo.length - 1;
布尔encontrado = FALSE; //发现标志 而(劣质< =上级)
{
炫酷=(+优越劣)/ 2; 如果(arreglo [中心] == buscar){
的System.out.println( - 号+ buscar + + +中心的发现,位置);
encontrado = TRUE;
打破;
}
否则,如果(arreglo [炫酷> buscar){
优越的炫酷= - 1;
}
其他{
劣质=炫酷+ 1;
}
的System.out.println(中心);
} 如果(encontrado == FALSE){
的System.out.println( - 号+ buscar +还没有被发现。);
}
}
解决方案
您可以使用阵列#的binarySearch
或集合#的binarySearch
,它已经在库中提供。
I am trying to implement a binary search in Java, doesn't work... don't know why, It always gives me an error saying the number wasn't found...
I am not sure why, I'm not seeing any error :S thanks for your help...
public void busquedaBinaria(int[] arreglo, int buscar) {
int centro = 0; //middle
int inferior = 0;
int superior = arreglo.length - 1;
boolean encontrado = false; //found flag
while(inferior <= superior)
{
centro = (superior + inferior) / 2;
if (arreglo[centro] == buscar){
System.out.println("-Number " + buscar + " found in the " + centro + " position.");
encontrado=true;
break;
}
else if (arreglo[centro] > buscar) {
superior = centro - 1;
}
else{
inferior = centro + 1;
}
System.out.println(centro);
}
if (encontrado == false) {
System.out.println("-Number " + buscar + " hasn't been found.");
}
}
解决方案
You can use Arrays#binarySearch
or Collections#binarySearch
, which are already available in library.
这篇关于在Java二进制搜索的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文