Arrays 在赔率序列中求一个数的平方

Arrays 在赔率序列中求一个数的平方,arrays,optimization,Arrays,Optimization,我有一个从3开始的顺序奇数数组。所以x={3,4,5,6,7,8,9,10,11,12,13…}。 我想知道是否有一种快速的方法可以找到n的平方在什么索引处。如果n是5,我在寻找数组中25的位置。现在我有((n)*(n-1)),我将其添加到当前的I索引中。还有更快的吗?你的数组是由连续的数字组成的,并且它是被排序的,因此它形成了一个数学算术级数,差为1,第一个元素为3,因此在索引i中我们有a[i]=i+3和i=a[i]-3 因此,为了找到n的平方的索引,让nsqr成为n*n,nsqr索引就是ns

我有一个从3开始的顺序奇数数组。所以x={3,4,5,6,7,8,9,10,11,12,13…}。
我想知道是否有一种快速的方法可以找到n的平方在什么索引处。如果n是5,我在寻找数组中25的位置。现在我有((n)*(n-1)),我将其添加到当前的I索引中。还有更快的吗?

你的数组是由连续的数字组成的,并且它是被排序的,因此它形成了一个数学算术级数,差为1,第一个元素为3,因此在索引
i
中我们有
a[i]=i+3
i=a[i]-3

因此,为了找到
n
的平方的索引,让
nsqr
成为
n*n
,nsqr索引就是
nsqr-3
,这是一个
O(1)
算法


为了使它更一般化,每当我们有以
a0
开始并相差
d
的连续排序数字时,为了找到
n
的平方在哪里,我们使用了
(nsqr-a0)/d

使用二进制搜索算法,O(logn)复杂性数组不是赔率数组,它只是从奇数开始,不管怎样,数组总是从连续的数字生成的吗?如果不是,它总是被排序吗?@niceman它总是由连续的数字组成,并且总是按递增的顺序排序