论为何没有k分
拿二分查找举例子
查找一个单调序列的第一个>x的位置
这里不用k分的原因是
k分的严格复杂度实际上是O(\(k*log_{k}n\))
因为你在k分的时候
你需要花费O(k)的时间判断在这k个分支中应该选择哪一个
(从\([l_1,r_1],[l_2,r_2],......[l_k,r_k]\)中选一个)
又因为\(k*log_{k}n=k\frac{ln(n)}{ln(k)}=ln(n)*\frac{k}{ln(k)}\)
这个关于k的函数在(1,e)单调递减,(e,+inf)单调递增
因此k的最优取值是2或3
2/ln2=2.88539
3/ln3=2.73071
因此理论上来说三分是比二分优秀一点点的
但是差距基本可以忽略,而且二分代码远比三分简单
所以通常使用二分