二分查找

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?

        使用二分查找的好处就是,方便快捷,效率高,比较次数少,平均性能好,但是查找的前提是,在有序序列的情况下,这个条件也是使用二分查找的一个限制条件。同时插入也是比较困难的


总结:

       笔墨纸砚文房四宝,同样的做编程不仅仅是需要在电脑上敲代码,而且还需要,在我们找不到方向的时候,拿起笔和纸画画,写写思路,这也是很重要的。


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值