首页 / php教程

    php如何实现在二维有序数组中查找数据(代码)

    类型:原创      发布者:不言2018-09-15 17:01:35

    php中文网赞助会员本篇文章给大家带来的内容是关于php如何实现在二维有序数组中查找数据(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
    1.二维数组,行row从左到右递增,列col从上到下递增
    2.定左下角为比较点,比它大的位于它右边,因此col++,并且col<=arr[0].length-1
    3.比左下角小的位于它的上面,因此row--,row>=0

    col=0
    row=arr.length-1
    while row>=0&&col<=arr[0].length-1
        if key==arr[row][col]
            return true
        elseif key>arr[row][col]
            col++
        else
            row-
    return false
    <?php
    //构造一个从上到下,从左到右递增的数组
    $arr=array();
    $flag=0;
    for($i=0;$i<10;$i++){
            $flag=$i*10;
            for($j=0;$j<10;$j++){
                    $flag++;
                    $arr[$i][]=$flag;
            }   
    }
    //生成了一个1到100的二维数组
    
    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;
    }
    //输出行,列
    var_dump(Find(50,$arr));
    var_dump($arr);
    array(2) {
      [0]=>
      int(4)
      [1]=>
      int(9)
    }array(10) {
      [0]=>  array(10) {
        [0]=>
        int(1)
        [1]=>
        int(2)
        [2]=>
        int(3)
        [3]=>
        int(4)
        [4]=>
        int(5)
        [5]=>
        int(6)
        [6]=>
        int(7)
        [7]=>
        int(8)
        [8]=>
        int(9)
        [9]=>
        int(10)
      }
      [1]=>  array(10) {
        [0]=>
        int(11)
        [1]=>
        int(12)
        [2]=>
        int(13)
        [3]=>
        int(14)
        [4]=>
        int(15)
        [5]=>
        int(16)
        [6]=>
        int(17)
        [7]=>
        int(18)
        [8]=>
        int(19)
        [9]=>
        int(20)
      }
      [2]=>  array(10) {
        [0]=>
        int(21)
        [1]=>
        int(22)
        [2]=>
        int(23)
        [3]=>
        int(24)
        [4]=>
        int(25)
        [5]=>
        int(26)
        [6]=>
        int(27)
        [7]=>
        int(28)
        [8]=>
        int(29)
        [9]=>
        int(30)
      }
      [3]=>  array(10) {
        [0]=>
        int(31)
        [1]=>
        int(32)
        [2]=>
        int(33)
        [3]=>
        int(34)
        [4]=>
        int(35)
        [5]=>
        int(36)
        [6]=>
        int(37)
        [7]=>
        int(38)
        [8]=>
        int(39)
        [9]=>
        int(40)
      }
      [4]=>  array(10) {
        [0]=>
        int(41)
        [1]=>
        int(42)
        [2]=>
        int(43)
        [3]=>
        int(44)
        [4]=>
        int(45)
        [5]=>
        int(46)
        [6]=>
        int(47)
        [7]=>
        int(48)
        [8]=>
        int(49)
        [9]=>
        int(50)
      }
      [5]=>  array(10) {
        [0]=>
        int(51)
        [1]=>
        int(52)
        [2]=>
        int(53)
        [3]=>
        int(54)
        [4]=>
        int(55)
        [5]=>
        int(56)
        [6]=>
        int(57)
        [7]=>
        int(58)
        [8]=>
        int(59)
        [9]=>
        int(60)
      }
      [6]=>  array(10) {
        [0]=>
        int(61)
        [1]=>
        int(62)
        [2]=>
        int(63)
        [3]=>
        int(64)
        [4]=>
        int(65)
        [5]=>
        int(66)
        [6]=>
        int(67)
        [7]=>
        int(68)
        [8]=>
        int(69)
        [9]=>
        int(70)
      }
      [7]=>  array(10) {
        [0]=>
        int(71)
        [1]=>
        int(72)
        [2]=>
        int(73)
        [3]=>
        int(74)
        [4]=>
        int(75)
        [5]=>
        int(76)
        [6]=>
        int(77)
        [7]=>
        int(78)
        [8]=>
        int(79)
        [9]=>
        int(80)
      }
      [8]=>  array(10) {
        [0]=>
        int(81)
        [1]=>
        int(82)
        [2]=>
        int(83)
        [3]=>
        int(84)
        [4]=>
        int(85)
        [5]=>
        int(86)
        [6]=>
        int(87)
        [7]=>
        int(88)
        [8]=>
        int(89)
        [9]=>
        int(90)
      }
      [9]=>  array(10) {
        [0]=>
        int(91)
        [1]=>
        int(92)
        [2]=>
        int(93)
        [3]=>
        int(94)
        [4]=>
        int(95)
        [5]=>
        int(96)
        [6]=>
        int(97)
        [7]=>
        int(98)
        [8]=>
        int(99)
        [9]=>
        int(100)
      }
    }

    相关推荐:

    PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解

    二维数组 PHP排序之二维数组的按照字母排序实现代码

    以上就是php如何实现在二维有序数组中查找数据(代码)的详细内容,更多请关注php中文网其它相关文章!

PHP中文网

未登录