请问一下大佬们,二分这两个有区别么
int l=0,r=n+1; while(l<=r){ int m=(l+r)/2; if(a[m]<x){ l=m; } else r=m; } return r;
int l=0,r=n-1; while(l<r){ int m=(l+r)/2; if(a[m]==x){ cout<<mid<<" "; return ; } if(a[m]<x){ l=m+1; } else r=m-1; }
还有为什么第一个最后返回r就是正确结果