[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)
  }
}

 

posted @ 2018-09-14 19:26  唯一客服系统开发笔记  阅读(303)  评论(0编辑  收藏  举报