おねずみ三千世界

これより西方、十万億もの仏国土を過ぎて、世界があるが、それを名づけて極楽という。

めぐる式二分探索

二分探索久しぶりに実装した話を書いたが、

 

こんなの意味あるの?と自分でも思いつつ、まあ趣味だから別に問題なかろう、と半ば無我の境地だったが、調べていく上でめぐる式二分探索に出会えたのはよかった。

qiita.com

例えば、

1 1 2 2 2 3 4 5 5 5

みたいな配列の一番左の2、あるいは一番右の5みたいなものを二分探索したいと思った時に、どういう実装がベターなのだろう?と少し頭を悩ませていた。

pythonならbisect_left, bisect_rightとかを使ってさくっと終わらせてもいいのだが、勉強のためにも自分でベターに実装したいと思っていたら辿り着いたのがめぐる式二分探索。

私がしたかったことは、適切な挿入位置を求めるということだったのだが、なるほど、この、OKかNGかの境目を見つける、ということでも確かにO(log N)ですませられる。

こういう武器を得られるというのは嬉しいことだ。