左岸阳光

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年3月22日

摘要: 二分写法很多,很容易写错,以后就固定下面的这种写法。首先二分的区间定为[x,y),然后mid值取下界x+(y-x)/2,循环条件是x<y。这样的好处是退出时x=y,有些问题里不用考虑是返回x还是y;而且在有些问题中,比如说插入的位置,可能会需要返回y这个位置。去下界是必须的,否则会访问到不在查询区间y位置。最后是剪短区间的地方,这个地方写错经常会导致死循环。由于选的mid是下界,mid不会等于y,所以不会出现[x,mid]=[x,y]的死循环情况,为了避免[mid,y]=[x,y]的情况,x更新的时候更新成x=mid+1。下面以递增序列为例写几种常见的二分。1需要返回value所在上限的 阅读全文
posted @ 2013-03-22 22:33 左岸阳光 阅读(1529) 评论(0) 推荐(0) 编辑