题目:在一个二维数组中,每行都按照从左到右递增的的顺序排序,每列都按照从上到下递增的顺序排序。请完成这样一个函数:输入这样的一个二维数组和一个整数,判断数组中是否含有改整数。
方法一:从最后一行的第一个元素开始比较,我们采用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;
}