二分查找细节
程序员文章站
2024-03-20 17:40:58
...
模板一
1.防止数据溢出: mid=start+(end-start)/2;
2.所有情况用else if写清楚
3.while中的循环条件是<=: 初始化end为nums.length-1;
4.找到目标值停止搜即nums[mid]=target, 没有找到用while终止即start=end+1;[3,2]
5.若while循环条件<,可以打补丁:return nums[start]==target?start:-1;
public class binarySearch {
//二分查找
public static int search(int[] a,int n) {
if(a==null||a.length==0)
return -1;
int start=0;
int end=a.length-1;
while(start<=end) {//终止条件是:start=end+1;[end+1,end]
int mid=start+(end-start)/2;//防止溢出
if(a[mid]==n)
return mid;
else if(a[mid]<n) {
start=mid+1;
}
else if(a[mid]>n)
end=mid-1;
}
return -1;
}
模板二
public static int search(int[] a,int n) {
if(a==null||a.length==0)
return -1;
int start=0;
int end=a.length;
while(start<end) {
int mid=start+(end-start)/2;//防止溢出
if(a[mid]==n)
return mid;
else if(a[mid]<n) {
start=mid+1;
}
else
end=mid;
}
return -1;
}
上一篇: Vue入门-idea版
下一篇: Excel上传下载(后端方法)