二分查找最小失败值

二分查找最小失败值

我有一个命令cmdcmd 1成功,但cmd 10000000失败。

cmd对于所有 n < X 都会成功,对于所有 n > X 都会失败。

有没有一个工具可以进行二分查找来找到值X?

答案1

find-first-failhttps://gitlab.com/ole.tange/tangetools/-/blob/master/find-first-fail/find-first-fail) 是在 中实现的bash。它可以作为命令调用:

find-first-fail cmd

或者可以获取 - 在这种情况下cmd可以是一个函数:

. $(which find-first-fail)
find-first-fail cmd

find-first-fail首先运行cmd 1。如果失败,它将寻找成功的最小值cmd。否则它将寻找失败的最小值cmd

cmd 1因此,如果失败,它也会找到 X ,然后cmd 1000000成功。

它使用二分搜索来执行此操作:首先,它将值加倍,直到退出代码更改,然后在最后两个值之间进行二分搜索。

相关内容