假设x是0到1之间的实数
如果 n = 2,则有两个分数范围 0 到 0.5 和 0.5 到 1
如果 n = 3,则存在三个分数范围 0 到 0.33、0.33 到 0.66 和 0.66 到 1
我想知道判断 x 属于哪个分数的最有效算法。
如果 x = 0.2 且 n = 3,则 x 属于第一个分数,因此索引为 0
如果 x = 0.4 且 n = 3,则 x 属于第二小数,因此索引为 1
这是复杂度为 O(N) 的 python 3 代码。
def index(x, n):
for i in range(0, n):
if i/n <= x and x <= (i + 1)/n:
return i
我想知道是否有更好的算法可能是恒定时间?
编辑:我之前没有明确说过,但是 0 和 1 都是 x 的合法值,当 x = 1 时结果应该是 n - 1
最佳答案
只需将两个数字相乘并去掉小数位:
def index(x, n):
return int(x*n)
复杂度为 O(1)
关于python - 将0到1之间的实数转换为索引的最佳算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49282032/