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

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

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

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

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