二分查找

1、题干:在数组中用二分查找元素

2、答题思路:通过对数组不断折半查找,与中间值比较大小后,选择相应的数组区间

3、关键代码:

 
//本函数使用递归方法,调用find(数组,查询的值,起始下标,末尾下标)如find1(array,x,0,array.length-1),找到返回下标,否则返回-1,查找前必须先升序排序
public static int find1(int a[],int x,int min,int max){ int k=(min+max)/2; if(a[k]<x&&k<max) return find1(a,x,k+1,max); else if(a[k]>x&&k>min) return find1(a,x,min,k-1); else if(a[k]==x) return k; return -1; }

//普通方法的二分,while条件改写min<max则可以简化判断条件

public
static int find2(int a[],int x,int min,int max){ while(true){ int k=(min+max)/2; if(a[k]<x&&k<max){ min=k+1; } else if(a[k]>x&&k>min){ max=k-1; } else if(a[k]==x) return k; else return -1; } }

 

posted @ 2019-10-11 18:23  浪波激泥  阅读(243)  评论(0编辑  收藏  举报