二分查找又(折半查找)
只适用于单调的数列进行查找
步骤:
1:首先确定查找的中间位置mid=(l+r)/2(这样不行由于int有范围)应该写成mid=l+(l-r)/2
2:于待查位置比较
3:对缩小的区域再折半公式。
要么查找成功,要么查找失败,在一维数组中
优点:进行了log2n次
package 暑假集训_第一周_二分;
import java.util.*;
public class 二分 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int a[] = new int[n];
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
Arrays.sort(a);
int l=0,r=n-1;
boolean bool=false;
int mid;
int treg=sc.nextInt();
while(l<=r) {
//mid = (l+r)/2;//因为int有范围,这样的话容易越界
mid = l + (r-l)/2;
if(treg==a[mid]) {
bool=true;
break;
}else if(treg>a[mid]) {
l=mid+1;
}else {
r=mid-1;
}
}
if(bool) {
System.out.println("YES");
}
}
}