Java binarySearch 学习

 初学的JAVA,搜索数组中的元素,遇到binarySearch()。就照着例子测试了一下。

- 代码片:
import java.util.Arrays;
import java.util.Comparator;
class Search{
public static void main(String[] args){
int A [] = {98, 11 , 12, 15,100 ,25 ,66, 78, 94 };
int b=Arrays.binarySearch(A,25);
//二分法查找,需要先排序,如果没有先排序,得到的结果是不确定的
System.out.println("location 25: "+ b);
Arrays.sort(A);//sort排序,升序排列
System.out.print("After sorted: ");
for(int i=0; i System.out.print(+A[i] + " ");
}
System.out.println();
int Newlocation = Arrays.binarySearch(A,25);
System.out.println("25Newlocation : "+ Newlocation + ", A["+ Newlocation +"]=" + A[Newlocation]);
}
}

- 得到以下结果:
这里写图片描述
从结果图上可以看出:在没有排序之前得到的,结果是负值,说明搜索结果是不确定的。当排序之后得到的结果就正确了。
这主要是二分法搜索需要先排序,然后才能正确搜索。在binary Search中,有yaoguicheng在其博客http://blog.csdn.net/yaoguicheng/article/details/5273776具体提到了使用binarySearch()的方法。简而言之:使用该方法的语法格式如下:int i = binarySearch( Source array, Target value);
如上例:int b=binarySearch(A ,25),在A数组中找到元素25。注意是在排序之后,才能确定找到。

引用 : yaoguicheng博文:
http://blog.csdn.net/yaoguicheng/article/details/5273776

待续:以后比较一下其和list.contains()的区别

你可能感兴趣的:(JAVA,Learning)