Numbers 查找范围中的数字位置

Numbers 查找范围中的数字位置,numbers,range,Numbers,Range,我正在编写一个函数,它必须在数值范围内找到给定数字的位置,范围是代码中的一个变量,现在让我们假设范围是4,因此范围如下所示: [0-3] [ 4-7 ] [ 8-11 ] [ 12-15 ] [ 16-19 ] [ 20-23 ] [24-27] 我想实现的是以尽可能快的方式找到给定数字所属的范围,因为此操作在数百万个事件中执行。 因此,到目前为止,我写了以下内容,并且效果良好: 公共字符串findRange(整数范围,整数编号2bFound) { int base=0; 如果(number2

我正在编写一个函数,它必须在数值范围内找到给定数字的位置,范围是代码中的一个变量,现在让我们假设范围是
4
,因此范围如下所示:
[0-3]
[ 4-7 ]
[ 8-11 ]
[ 12-15 ]
[ 16-19 ]
[ 20-23 ]
[24-27]

我想实现的是以尽可能快的方式找到给定数字所属的范围,因为此操作在数百万个事件中执行。 因此,到目前为止,我写了以下内容,并且效果良好:
公共字符串findRange(整数范围,整数编号2bFound)
{
int base=0;
如果(number2bFound==0)
number2bFound=1.0;
int更高=0;

而(base如果所有范围的大小都相同,并且从0开始,则可以进行简单的除法,此外,还可以通过模运算找到子范围中的位置

这个过程很简单,找到你的数字的整数除法
n
和你的范围大小,这将给你它所属的子范围,找到子范围内的位置,再根据范围大小找到你的数字的模

下面是一个python示例

def find_position(n,size):
    return (n//size, n%size)
尺寸范围为4码

>>> test=[ [0,1,2,3], [4,5,6,7], [8,9,10,11], [12,13,14,15], [16,17,18,19], [20,21,22,23] ]
>>> find_position(6,4)
(1, 2)
>>> test[1][2]
6
>>> find_position(11,4)
(2, 3)
>>> test[2][3]
11
>>>
射程5

>>> test=[ [0,1,2,3,4], [5,6,7,8,9] ,[10,11,12,13,14],[15,16,17,18,19],  [20,21,22,23,24] ]
>>> find_position(11,5)
(2, 1)
>>> test[2][1]
11
>>> 
该过程如下所示,假设
Size
是每个子范围的大小,并且
n
是您要查找的号码,那么您只需要是要查找的号码n即可

翻译成java应该很简单,如果我的有点生疏,请原谅,但我想是这样的

public String findRange(int range,int number2bFound){
    int sub_ran_pos, pos;
    sub_ran_pos = (int) number2bFound/range;    //or however the integer division is in java
    pos = number2bFound % range;                //or however the modulo operation it is in java
    return sub_ran_pos + "-" + pos;             //or the appropriate return type, for this
}
(我不记得了,但如果java是1-index,那么需要在每个数字上加1才能得到正确的结果)