题目:在一个二维数组中,每行都按照从左到右递增的的顺序排序,每列都按照从上到下递增的顺序排序。请完成这样一个函数:输入这样的一个二维数组和一个整数,判断数组中是否含有改整数。

方法一:从最后一行的第一个元素开始比较,我们采用java来写:

JAVA:
public boolean searchMatrix(int[][] matrix, int target)
{ int row&#61;matrix.length;int column&#61;matrix[0].length; if(matrix&#61;&#61;null||row<&#61;0||column<&#61;0)  {  return false;  }  //从坐下角开始搜索  int nCol &#61; 0;  int nRow &#61; row- 1;  boolean found &#61; false;  while (nCol < column && nRow >&#61; 0)  {  if (matrix[nRow][nCol] &#61;&#61; target)  {  found &#61; true;  break;  }  else if (matrix[nRow][nCol]}

方法二&#xff1a;从第一行的最后一个元素开始比较&#xff0c;我们采用C&#43;&#43;来写&#xff1a;

bool FindArray(int *pArray,int nWidth,int nheight,int nKey)  
{  if (NULL &#61;&#61; pArray || nWidth <&#61; 0 || nheight <&#61; 0)  {  return false;  }  int nCol &#61; nWidth - 1;  int nRow &#61; 0;  bool bFound &#61; false;  while (nCol >&#61; 0 && nRow <&#61; nheight-1)  {  if (pArray[nRow*nWidth&#43;nCol] &#61;&#61; nKey)  {  bFound &#61; true;  break;  }  else if (pArray[nRow*nWidth&#43;nCol] < nKey)  {  nRow &#43;&#43;;  }  else  {  nCol --;  }  }  return bFound;  
}