二分上下取整

ok | no

for i < j {
  mid := int(uint(i+j+1) >> 1)
  if !judge(mid) {
    j = mid - 1
  } else {
    i = mid;
  }
}

no | ok

for i < j {
  mid := int(uint(i+j) >> 1)
  if !judge(mid) {
    i = mid + 1;
  } else {
    j = mid;
  }
}

版权声明:本文为sunmaoxiang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。