我想执行特定类型的搜索。我不知道它是否有名字,但我可以描述它,并且有执行代码。在算法中组合循环
对于2维矩阵,起始于点0,0和工作右下,搜索代将如下所示:
- 1, 4, 9,16, ...
- 2, 3, 8,15,...
- 5, 6, 7,第14,...
- 10,11,12,13,...
- ...
所以第一搜索循环将检查1 ,第二环路2检查,3,4,所述第三循环检查5,6,7,8,9,等等
产生该搜索中的代码是:
$row_search = 0;
$point_not_found = true;
while ($point_not_found && $row_search < $matrix_height/2)
{
$current = array(0, $row_search);
while ($current[0] < $row_search)
{
if (searchForPoint($matrix, $current) !== false)
$point_not_found = false;
++$current[0];
}
if (!$anchor_not_found)
break;
while ($current[1] >= 0)
{
if (searchForPoint($matrix, $current) !== false)
$point_not_found = false;
--$current[1];
}
++$row_search;
}
我不满意以及如何将搜索分解为两个循环,因为循环内的代码几乎相同。您能否提出一种方法来组合或嵌套循环,并消除searchForPoint的多余呼叫?