论为何没有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=kfrac{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
因此理论上来说三分是比二分优秀一点点的

但是差距基本可以忽略,而且二分代码远比三分简单

所以通常使用二分

原文地址:https://www.cnblogs.com/Creed-qwq/p/13733439.html