折半查找

来源:互联网 发布:最简单的java代码 编辑:程序博客网 时间:2024/06/05 09:30

折半查找思想:在一个有序的数组(int型)中,要快速实现查找一个元素,可以用折半的思想。

   1.先获取min,max,mid

   2.获取数组为角标为mid的值进行和key比较,从而实现移动min和max,min和max发了生了变化,mid也会随着变化。

   3.跳出循环的条件是min>max或者arr【mid】=key。

public static int halfSearch(int arr[],int key){   int min,max,mid;   min=0;       max=arr.length-1;   mid=(min+max)/2;      while(arr[mid]!=key){        if(arr[mid]<key)min=mid+1;else if(arr[mid]>key)max=mid-1;if(min>max)return -1;//可能超出范围mid=(min+max)/2;//循环内部mid的变化一直是跟着min和max的       }return mid;}

第二种方法跳出循环的是min>max

public static int halfSearch_2(int arr[],int key){   int min=0,max=arr.length-1,mid;  while(min<=max){       mid=(min+max)>>1;   if(key>arr[mid])   min=mid+1;   else if(key<arr[mid])   max=mid-1;   else return mid;//找到了           } return -1;//没有找到,循环结束}


原创粉丝点击