二分模板(java版)

it2025-03-28  3

注意

模板是一定会返回值的,具体题目要进行相应的判断

模板1(整数二分)

static int search_1(int[] arr,int l,int r,int x){ Arrays.sort(arr); while (l<r){ int mid=(l+r)/2; if (check(mid)){ r=mid; }else{ l=mid+1; } } return l; }

模板2(整数二分)

static int search_2(int[] arr,int l,int r,int x){ Arrays.sort(arr); while (l<r){ int mid=(l+r+1)/2; if (check(mid)){ l=mid; }else{ r=mid-1; } } return l; }

模板3(实数二分)

可以循环100次来达到精度要求

double bsearch_3(double left, double right) { for (int i = 0; i < 100; i++) { double mid = (left + right) / 2; if (check(mid)) left = mid; else right = mid; } return left; }

模板4(实数二分)

一般的需要left-right<0.0000001在题目要求的精度基础上后移两位

double bsearch_4(double left, double right) { while(right-left>0.0000001){ double mid = (left + right) / 2; if (check(mid)) left = mid; else right = mid; } return left; }
最新回复(0)