二维数组中的查找
1、简单查找运用原生函数
function findInOneArray($target, $array) {
if (array_search($target, $array) !== false) {
return true;
} else {
return false;
}
}
function Find($target, $array) {
foreach ($array as $key => $val) {
if (findInOneArray($target, $val)) {
return true;
}
}
return false;
}
2、在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
function search($target, $array) {
$i = count($array[0]) - 1;
$j = 0;
if ($array[count($array) - 1][$i] < $target || $array[0][0] > $target) {
return false;
}
for ($i; $i >= 0; $i--) {
if ($array[$j][$i] <= $target) {
for ($j; $j < count($array); $j++) {
if ($array[$j][$i] == $target) {
return array($j,$i);
} else if ($array[$j][$i] > $target) {
break;
}
}
}
}
return false;
}
3、二维有序数组中的查找数据: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
$arr = array();
$flag = 0;
for ($i = 0; $i < 3; $i++) {
$flag = $i * 3;
for ($j = 0; $j < 3; $j++) {
$flag++;
$arr[$i][] = $flag;
}
}
function Find($target, $array) {
$col = 0;
$row = count($array) - 1;
while ($row >= 0 && $col <= count($array[0]) - 1) {
if ($target == $array[$row][$col]) {
return array($row,$col);
} elseif ($target > $array[$row][$col]) {
$col++;
} else {
$row--;
}
}
return false;
}