我有一个虚拟的大小为GB的数组,它是m×n的,高值在右侧和向上。虚拟意味着从给定坐标提供返回值,但在给定运行中,程序员不知道函数。保证给定数字在数组中。
{现在结果表明这个数字是两个质数的乘积,因此是NP难问题}
我看了一下已排序数字值的高效搜索,但它没有我需要反映的多行结构。我尝试了“螺旋”方法,但有时遍历需要很长时间(查看超过可能槽的一半)。通常,行之间有规则的间隔,但每行的间隔都不同。列倾向于具有(不同的)算术进度。这些行是已排序的。一行中最左边的值小于下一行中最左边的值,一行中最右边的值小于下一行中最右边的值。请参见以下示例数据。我的尝试是首先消除不能容纳目标值的行,然后选择剩余行中的“中间”值行。在该行上进行二进制搜索,然后根据下一行是否可能(猜测)具有更多的范围内的值而上下移动。目标值可能随机放置在可用的插槽中。以下是一些示例数据。
{现在结果表明这个数字是两个质数的乘积,因此是NP难问题}
我看了一下已排序数字值的高效搜索,但它没有我需要反映的多行结构。我尝试了“螺旋”方法,但有时遍历需要很长时间(查看超过可能槽的一半)。通常,行之间有规则的间隔,但每行的间隔都不同。列倾向于具有(不同的)算术进度。这些行是已排序的。一行中最左边的值小于下一行中最左边的值,一行中最右边的值小于下一行中最右边的值。请参见以下示例数据。我的尝试是首先消除不能容纳目标值的行,然后选择剩余行中的“中间”值行。在该行上进行二进制搜索,然后根据下一行是否可能(猜测)具有更多的范围内的值而上下移动。目标值可能随机放置在可用的插槽中。以下是一些示例数据。
请问有什么想法吗?
988 1040 1092 1144 1196
975 1025 1075 1125 1175
960 1008 1056 1104 1152