给定数组下标 index 与数据长度 len

1
2
3
4
5
下标的计算公式是 
    end = index + len/2
    start = index - (len - 1)/2

不过这套公式只能应对偶数时 index 的中心点在左边的情况

下面计算示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
第一种是长度为奇数的情况:
start       index       end
|           |           |
4     5     6     7     8
len = 5
end = 6 + 5/2 = 8
start = 6 - (5 - 1)/2 = 4

第二种是长度为偶数的情况:
start       index             end
|           |                 |
4     5     6     7     8     9
len = 6
end = 6 + 6/2 = 9
start = 6 - (6 - 1)/2 = 4

以下是长度为偶数时 index 的中心点在右边的情况

1
2
3
4
5
6
7
8
start             index       end
|                 |           |
4     5     6     7     8     9
len = 6
end = 7 + 6/2 = 10
start = 7 - (6 - 1)/2 = 5

可以看到计算结果和实际的数组下标并不符合