欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[PHP] 算法-二位有序数组中查找的PHP实现

程序员文章站 2022-06-02 23:47:11
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 1.二维数组,行row从左到右递增,列col从上到下递增 2.定左下角为比较点,比它大的位于它右边,因此c... ......
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
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)
  }
}