二维数组中的查找

二维数组中的查找

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;
}
posted @ 2019-06-19 14:19  兴宇  阅读(180)  评论(0编辑  收藏  举报