二分查找

来源:互联网 发布:淘宝店推广软文 编辑:程序博客网 时间:2024/06/10 09:39

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?

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


总结:

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


0 0
原创粉丝点击