What?
二分查找:又被成为折半查找。前提条件就是元素是排好序的,其次通过比较中间值,让所要找的KeyValue值与中间值进行对比,然后再进行折中的查找,直到找到所要找的元素位置或者找到此表不存在位置,这时候就代表这个数组中不存在次元素。
How?
我们来看一下下面的图:(要找的值是10)
解释说明:
以上是二分查找的思路,我们来看一下他的代码片段。
代码区:
<span style="font-size:18px;">/*
作者:雪
时间:2015年5月13号
功能:二分查找
思路:1.折半查找的前提就是有序数组
2.折半查找就是讲一个数组去min和max下角标,然后将要查找的数从中间的数进行对比
3.如果大于中间的数就从后一半的中间开始查找,这样一半一半的进行查找
步骤:
1.写一个关于折半查找的方法
2.变量需要:min max mid
3.传进来的数据和数组中的中间的元素进行对比,
4.返回所在的下角标
*/
public class binsearch
{
public static void main(String[] args)
{
int arry[]={1,3,5,7,8,9};
int mid=binSearch_1(arry,2);
System.out.println(mid);
}
public static int binSearch_1(int arry[],int search)
{
//这个方法一共两个结果,要么就是min=max返回mid;要么就是返回-1值
int min=0;
int max=arry.length-1;
int mid;
while(min<=max)
{
//讲这句话写在循环中一下的几句判断就可以不用谢了
mid=(min+max)/2;
//if(arry[mid]==search)
//{
//mid=mid;
//mid=(min+max)/2;
//}
if(arry[mid]>search)
{
max=mid-1;
// mid=(min+max)/2;
}
else if(arry[mid]<search)
{
min=mid+1;
}
else
{
//折半查找如果找到的话肯定就是一个中间值,
//肯定是min=max,所以不管怎么循环,最终找
//到结果的肯定是mid==max这个条件
return mid;
}
}
return -1;
}
}</span>
只要是了解了他的思路就不难实现。
Why?
使用二分查找的好处就是,方便快捷,效率高,比较次数少,平均性能好,但是查找的前提是,在有序序列的情况下,这个条件也是使用二分查找的一个限制条件。同时插入也是比较困难的
总结:
笔墨纸砚文房四宝,同样的做编程不仅仅是需要在电脑上敲代码,而且还需要,在我们找不到方向的时候,拿起笔和纸画画,写写思路,这也是很重要的。